黑马程序员技术交流社区
标题:
关于多线程的问题
[打印本页]
作者:
学习代码
时间:
2014-3-14 09:02
标题:
关于多线程的问题
class Demo implements Runnable
{
private int key =100;
public void run()
{ while(true)
{if (key>0)
{
System.out.println(Thread.currentThread().getName()+"::"+key--);
}
}
}
}
class A
{
public static void main(String[] args)
{
Demo d=new Demo();
Thread t1=new Thread(d);
Thread t2=new Thread(d);
Thread t3=new Thread(d);
Thread t4=new Thread(d);
t1.start();
t2.start();
t3.start();
t4.start();
}
}为什么要用while(true)判断正确才能运行呢,不写while为什么就不行了啊? 请大家指教一下
作者:
戒爱
时间:
2014-3-14 09:09
...使用循环让他每一个线程的生命周期变长,如果不使用while也是一个一样的只是每一个线程的生命从上到下执行完了就结束了,这里只是使用循环来反应线程,并不是说线程中非得有循环;应该忽略次要的东西,抓住实质
作者:
mohuancaizi
时间:
2014-3-14 09:39
多线程函数和有While(true)没有关系!
我写的多线程函数很多都没有While(true),只是你看到的多线程函数里面有While(true),就认为多线程函数需要While(true),只是不对的,犹如瞎子摸象,看到啥就是啥!
程序代码是根据需要而写的,不是人家写什么你就写什么,你以后会遇到需要While(true)的时候的。比如说你的程序需要一直监控某个东西,一般都是每隔一段时间去看看什么情况,除了可以使用定时器去做,还可以就是新建一个线程,在这个线程搜索里面就是一个While(true)的死循环。
for循环和while循环其实差不多,for能实现的while也能实现,反之亦然
至于为什么要while(true),举个简单的例子,监控程序就需要一个死循环,来实现24小时不间隔运行,比如:
while(true){
// 执行监控,发现问题时进行邮件报警等
Thread.Sleep(1000);// 休眠一秒钟,再进行下一次检测
}
while(true){
//死循环,一直执行这里的代码不间断
}
if(true){
//不是循环,这里的代码只执行一次
}
作者:
学习代码
时间:
2014-3-14 10:33
谢谢 现在明白多了 嘿嘿
作者:
daoyua
时间:
2014-3-14 16:24
while(true)一般是范例,或者简写,或者一些一直要运行的线程,最重要的是明白,线程就是一条流水线,从头走到尾,所以说线程不是非要while的,看需求,你可以写for循环都可以,循环的次数多,更多突显线程的作用而已
作者:
也许依然
时间:
2014-3-15 08:53
并不是有while(true) 判断才是正确的,它与多线程没有关系,将打印语句放在while循环中,只是为了显示多线程中当前运行的是哪个线程。用for循环也可以
for(int x=100; x>0; x--)
{
System.out.println(Thread.currentThread().getName());
}
复制代码
作者:
luoanjade
时间:
2014-3-15 11:17
while(true)的作用就是循环。不用while循环的话,每个进程执行一次,就结束了。你可以把上面的while(true)和if(key>0)合并成:while(key>0),这样试试,效果应该是一样的。
作者:
胡文彬
时间:
2014-3-15 15:57
不while true 运行一次线程的生命周期就结束了,为了让线程存活,看到cpu在他们中间切换,所以就那样了,
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2