黑马程序员技术交流社区
标题:
关于多线程
[打印本页]
作者:
许鑫星
时间:
2013-2-26 23:58
标题:
关于多线程
本帖最后由 许鑫星 于 2013-2-27 12:30 编辑
我想实现一个功能,除了主函数之外,做多只能同时进行2个线程,写了一个方法,但是有点问题
//count是一个静态全局变量,count=2,有3个线程传入,但是在count=0之后第三个线程并不会启动
public void exec(Thread thr) {
while (count <= 0);
count--;
thr.start();
while (!thr.isAlive()) {
//这里执行不到,为什么呢
count++;
}
}
复制代码
作者:
谢达
时间:
2013-2-27 00:51
当count=0时。程序在进行死循环。所以启动不了
作者:
刘凯
时间:
2013-2-27 01:08
第一个线程进入 count=2 count-- 后运行 count=1 由于该线程刚刚.start() 所以执行while (!thr.isAlive())时 可能该线程还没有死 所以count++; 不执行
在第二个线程进入同样 count=1 count-- 后运行 count=0 由于该线程刚刚.start() 所以执行while (!thr.isAlive())时 可能该线程还没有死 所以count++; 不执行
第三个线程进 count=0 while (count <= 0) ; 成立 无限循环 所以就死循环了 第三个线程就不会启动
个人见解 求指正
ps: 斑竹大人 求及格 {:3_65:}
作者:
许鑫星
时间:
2013-2-27 01:17
{:soso_e112:}确实是没想清楚。。。从新写了下,这次应该没问题了
public void exec(final Thread thr) {
while (count <= 0)
;
count--;
thr.start();
new Thread() {
public void run() {
while (thr.isAlive())
;
count++;
};
}.start();
}
复制代码
作者:
陈丽莉
时间:
2013-2-27 08:59
本帖最后由 陈丽莉 于 2013-2-27 09:02 编辑
许鑫星 发表于 2013-2-27 01:17
确实是没想清楚。。。从新写了下,这次应该没问题了
欢迎发帖,如果得到问题答案,请将帖子改成【已解决】,若还有疑问,请继续追问~
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2