黑马程序员技术交流社区
标题:
有关线程问题
[打印本页]
作者:
柴永菲
时间:
2011-11-3 21:56
标题:
有关线程问题
public class ticket implements Runnable {
private int tick=10;
public void run() {
while(true){
if(tick>0){
System.out.println(Thread.currentThread().getName()+"---sale"+tick--);
}
}
}
/**
* @param args
*/
public static void main(String[] args) {
ticket t=new ticket();
Thread t1=new Thread(t);
Thread t2=new Thread(t);
Thread t3=new Thread(t);
Thread t4=new Thread(t);
t1.start();
t2.start();
t3.start();
t4.start();
}
}
为什么这个程序在myeclipse里面运行之后电脑会很卡,之后只能强制关机,还有就是老师的视频上的tick输出的怎么是随机的,我的是按照10,9,8,7、、、、2、1输出的
作者:
fso918
时间:
2011-11-3 22:29
本帖最后由 fso918 于 2011-11-3 22:29 编辑
四个死循环,能不死机吗?
你没作线程同步,肯定输出不会是有规律的,你多运行几次程序,就可以看到了
作者:
祁焱
时间:
2011-11-3 22:56
你从DOS环境下运行,应该会出现随即的结果。
作者:
柴永菲
时间:
2011-11-3 23:03
祁焱 发表于 2011-11-3 22:56
你从DOS环境下运行,应该会出现随即的结果。
嗯好我试试我看老师的就是在dos下运行的是随机的,我以为在dos下和eclipse运行的结果是一样的呢
作者:
黄健
时间:
2011-11-3 23:04
在while循环中没有break,程序一直运行,所以会卡
虽然是4个线程在同时操作,但因为代码运行的很快,不容易看到不同步的情况,可以在while循环中让线程歇一会,Thread.sleep(10),这样更容易看到不同步的现象
作者:
罗亚东
时间:
2011-11-3 23:45
myeclipse本来就占得内存大,有些程序是不适合在myeclipse下运行的。
作者:
刘福双
时间:
2011-11-3 23:48
你这是 4个 死循环 无限 肯定 卡了......操作 占资源啊 还好是有myeclipse 如果是c的话 我记着以前c弄到死循环 得了 只能重启机器.......
作者:
王德云
时间:
2011-11-4 02:07
首先,你的while语句块要for循环里面。
然后,你在栈内存中new了四个线程对象,其实是在调同一个线程(Thread-0),就意味着一个线程,同时被调了四次,能不卡吗?而且没有什么意义.
你可以看一下张老师的专门讲线程的那一块,很详细.
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2