黑马程序员技术交流社区
标题:
听视频,老师说让线程停止首先想到join,让线程正常停止
[打印本页]
作者:
itheima01
时间:
2013-5-26 16:02
标题:
听视频,老师说让线程停止首先想到join,让线程正常停止
本帖最后由 itheima01 于 2013-5-26 16:06 编辑
private void disconnect() {
//pw.close();
try {
bConnected = false;
tr.join();//这里为什么要用join
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
dos.close();
dis.close();
sk.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
让线程停止首先想到join,让线程正常停止不明白什么意思
作者:
First
时间:
2013-5-26 18:11
请贴上完整的代码,
并标明视频是哪一天,及其标题
作者:
张旺达
时间:
2013-5-26 18:34
Thread提供了让一个线程等待另一个线程完成的方法——join()方法,当在某个程序执行中调用其他线程的join()方法时,调用线程将被阻塞,直到被join()方法加入的join线程执行完为止。
这个方法通常由使用线程的程序调用,以将大问题划分成几个小问题,每个小问题分配一个线程,当所有的小问题都得到处理后,在调用主线程来进一步操作。
public class JoinThread extends Thread
{
public JoinThread(String name)
{
super(name);
}
public void run()
{
for (int i=0; i<100; i++)
{
System.out.println(getName()+" "+i);
}
}
public static void main(String[] args)throws Exception
{
new JoinThread("新线程").start();
for (int i=0; i<100; i++)
{
if(i==20)
{
JoinThread jt = new JoinThread("被Join的线程");
jt.start();
jt.join();
}
System.out.println(Thread.currentThread().getName()+" "+i);
}
}
}
复制代码
dfd.png
(2.17 KB, 下载次数: 0)
下载附件
2013-5-26 18:34 上传
1
作者:
张旺达
时间:
2013-5-26 18:36
当i==20的时候,启动了“被join的线程”,主线程一直处于阻塞状态,直到“被join的线程”执行完成,如上图,当然有时候执行会有一点误差。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2