A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© jonn 高级黑马   /  2013-2-26 20:40  /  1657 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

多线程并发中,如何执行完子线程后再执行main线程?求算法,求思路
1.不能用Threed方法 join() ,即是用了,没实际意义,join()子线程执行顺序变了,不存在多线程并发概念
2.不能用 java.util.concurrent.*; 其包中所有辅助类来操作,这里只求个好的线程计数器算法
3.明确算法思路,满意的有奖励....{:soso_e120:}

5 个回复

倒序浏览
我在JDK1.6中没有发现 java.util.concurrent这个类...
既然不能用,估计用他就能解决,那你去看下他的源码,借鉴下呗.
回复 使用道具 举报
本帖最后由 陈圳 于 2013-2-26 21:08 编辑

我想下...如果lock在不在concurrent这个包类呢?
我们可以这样设想下,使用synchronized(类名.class)在主函数内放一把锁,其他进程进了run方法后,取得了这把锁,然后进去执行了.
执行完后,主线程困在这个while()循环中,空等待,然后其他线程干完后,传个break;让他出去,这样行不行?
while(true)
{//主线程滞停区
    synchronized()
    {}
}
回复 使用道具 举报
陈圳 发表于 2013-2-26 21:00
你看这样符合要求么?...没看完题....

不存在多线程并发的呀,线程启动好歹至少得1000个吧,不过谢谢你了...
回复 使用道具 举报
赵文 发表于 2013-2-26 21:08
不存在多线程并发的呀,线程启动好歹至少得1000个吧,不过谢谢你了...

我改了,你再看一下行不行....我上面的回复
回复 使用道具 举报
陈圳 发表于 2013-2-26 21:00
我想下...如果lock在不在concurrent这个包类呢?
我们可以这样设想下,使用synchronized(类名.class)在主函数 ...

怎么确实其他所有子线程在某一刻执行完,无法明确传一个break给mian线程的同步代码块
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马