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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘学明    高级黑马   /  2013-4-23 00:03  /  1933 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 刘学明    于 2013-4-28 22:14 编辑

学习Java多线程,一直对Join理解不是很透彻  

JDK上这样写  join public final void join(long millis)throws InterruptedException Waits at most millis milliseconds for this thread to die. A timeout of 0 means to wait forever.  意思是等待一段时间直到这个线程死亡,但是真正怎么运用还是不太懂

请大家帮助给一些详解 包括在各种线程中的作用

和同步 非同步什么的联系,顺便把线程的方法 wait  notify  sleep jonin 等方法对比说下 以便能更好理解

给点代码和注释更好   谢谢大家!

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

3 个回复

倒序浏览
join方法:等待调用join方法的线程结束,再继续执行.防止意外发生。

wait 方法会使调用该方法的线程等待,释放锁资源,让其他线程执行,
直到notify或者notifyAll唤醒该线程,唤醒当前对象锁的等待线程使用notify或notifyAll方法,也必须拥有相同的对象锁

sleep方法在指定时间内让当前正在执行的线程暂停执行,但不会释放锁资源,形成阻塞。

wite()和notify()必须在synchronized函数或synchronized代码块中进行调用

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
我是这样理解的:当a线程执行到了B线程的join()方法时,A就会等待,等B线程都执行完,才会执行A线程。例如main函数里面执行了b.join()那么main就会变成后台守护线程并放弃执行权,b线程开启并开始执行,等b执行完毕后,main的线程从新开启继续执行。后面的其他兄弟补上~~

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
楼主你好,请及时对回帖者回复,如果问题解决了,请及时处理帖子,将帖子分类改为“已解决”,谢谢你的支持
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马