黑马程序员技术交流社区
标题:
线程和多线程之间的区别?
[打印本页]
作者:
黑马---邢志伟
时间:
2012-6-16 14:38
标题:
线程和多线程之间的区别?
本帖最后由 黑马---邢志伟 于 2012-6-17 08:05 编辑
我想请教大家线程和多线程有什么区别呀。。。有点搞不明白!!!希望详细说一下,谢谢,,求助。。。
作者:
张_涛
时间:
2012-6-16 14:54
线程是程序中一个单一的顺序控制流程。在单个程序中同时运行多个线程完成不同的工作,称为多线程。
作者:
龙秋地
时间:
2012-6-16 14:56
本帖最后由 龙秋地 于 2012-6-16 17:57 编辑
Java多线程和传统的单线程的区别是由于各个线程的控制流彼此独立,使得各个线程之间的代码是乱序执行的,出现了并发访问带来的一切问题。
1.就一个人包饺子,那个就是单线程。2.对于包饺子这样的事情,多个人一起干,大家之间没有冲突,各个包自己的,那就是短线程。明显速度要快于一个人按。java多线程有两种实现方法:
有两种方法:第一、继承java.lang.Thread第二、实现Runnable接口.
继承Thread而重写了run()方法
1.public class Hello extends Thread{
2.int i;
3.public void run(){
4.while(true){
5.System.out.println("Hello "+i++);
6.if(i==10) break;
7.}}}
8.public class HelloThread {
9.public static void main(String[] args){
10.Hello h1 = new Hello();
11.Hello h2 = new Hello();
12.h1.start(); //用两个线程执行那10次循环
13.h2.start();
14.}} 上面的例子是第一种方法,下面是第二种方法
15.public class TestThread {
16.public static void main(String args[]) {
17.Xyz r = new Xyz();
18.Xyz r1 = new Xyz();
19.Thread t1 = new Thread(r);
20.Thread t2 = new Thread(r1);
21.t1.start();//用两个线程执行那50次循环
22.t2.start();
23.}} //实现Runnable接口
24.class Xyz implements Runnable {
25.int i;
26.public void run() {
27.i = 0;
28.while (true) {
29.System.out.println("Hello " + i++);
30.if ( i == 50 ) {
31.break;
32.}}}}
复制代码
作者:
李盼
时间:
2012-6-16 14:57
本帖最后由 李盼 于 2012-6-16 15:04 编辑
你应该问单线程和多线程之间的区别吧!
单线程就是按顺序依次执行,例如
main{ method1(); method2();method3();method4()........ }
那么肯定是method1()方法执行完了才会去执行method2(),如果method1()不执行完method2()永远不会执行。
多线程就是在mian线程外,另外再开启一个线程执行,例如:
main{ new Thread(new Run).start();method1();method3()......}
这个就是执行到new Thread(new Run).start()时候,启动一个新的线程去执行Run类的实例对象中的run方法。然后main线程继续执行method1()方法,此时method1()方法不需要等待run方法执行完就可以执行。
顺便给你普及下CUP是如何多线程的,其实CUP是在短时间内不停的切换线程去执行,因为切换速度很快,所以给人的感觉就是多个线程在一起执行。
再给你举个例子,甲乙两个人一起参加跑步,甲跑10000m,乙跑100m,单线程的执行过程就是如果甲先到的赛场,那么我们就让甲先跑完10000m,乙再开始跑,显然乙就要等很久了。
多线程就是裁判员看甲先来了,让他跑,然后看乙也过来了,就说:甲你先休息会,让乙跑几步,然后这个时候赛道就让乙去跑,甲就在旁边休息,乙跑了50m,裁判员又说,乙,你先休息会,让甲去跑,然后乙就停止休息,甲就去跑,这样乙也许用个一两次就跑完了100m 不需要等待甲跑完。
作者:
曾祥彬
时间:
2012-6-16 15:29
线程是代码的执行体,代码的执行是在线程里面执行的。如果你在你的程序中没有写线程,那么就只有一个主线程。
线程的代码是顺序执行的。也就是说从第一行代码开始,一直执行到最后一行代码!
多线程只的是一种写程序的思想。操作系统的课上过吧!那里面就有讲线程的。
通俗的将,线程就是你要完成一个任务。单线程就是这个任务只有你一个人去做,或许这个任务要做很多次:比如说体育课,老师要你们班跑操场10圈(总共 十圈),这个跑一圈相当于一个线程,如果只有你一个人跑(单线程),那么你就要跑完一圈后再跑一圈,一个人跑完十圈(大哥,你觉得累吗?!!!)。但是如果有十个人跑(多线程的程序),每个人只要跑一圈,那么,是不是快多了(只要你一个的时候的十分之一)!!!你是不是也没有那么累。这就是多线程的好处。
当然,在程序中并不是一定就是多线程就好,这个看具体情况而定。等过些日子你搞懂了就明白了!
作者:
山水游客
时间:
2012-6-16 16:56
单线程就是程序执行时,所跑的程序路径(处理的东西)是连续顺序下来的,必须前面的处理好,后面的才会执行到。
多线程编程的目的,就是"最大限度地利用CPU资源" .
作者:
刘笑
时间:
2012-6-16 17:50
举个例子:你早上上班,正要打卡的时候,手机响了。。你如果先接了电话,等接完了,在打卡,就是单线程。
如果你一手接电话,一手打卡。就是多线程。
2件事的结果是一样的。。你接了电话且打了卡。
作者:
黄连兵
时间:
2012-6-16 19:37
多线程允许我我们充分利用资源,好比做饭的时候两个灶都开着火,一边熬汤,一边炒菜。而厨师就是cpu,可以炒着菜的时候尝尝汤是否到火候了;总比只开一个灶弄得快吧~!
程序设计的时候,我们就可以充分利用cpu资源,现在只能手机可以开着音乐播放器的同时看小说就是这个道理。
作者:
sbeeqnui1987
时间:
2012-6-16 22:11
打个比方,单线程就是你去厨房有烧饭又烧菜,一个人来回跑;多线程就是两个人,一个单做饭,一个单做菜。这样的解释应该比纯理论的好理解一点吧?
再补充一下,多线程就是一个CPU虚拟了几个CPU,而双核就是实际上就有两个线程了,当然,还可以每个核再去虚拟多个线程(也可以理解成多个流水线吧)
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2