黑马程序员技术交流社区
标题:
多线程的join方法如何使用?
[打印本页]
作者:
吴硕
时间:
2012-10-17 09:04
标题:
多线程的join方法如何使用?
本帖最后由 吴硕 于 2012-10-17 13:53 编辑
一个例子:
public class JoinTest implements Runnable
{
/**
* @param args
*/
public static void main(String[] args) throws InterruptedException
{
// 启动一个线程
new Thread(new JoinTest()).start();
for(int i = 0; i < 100; i ++)
{
if(i == 20)
{
new Thread(new JoinTest()).join(); //这个线程并没有执行,如果使用start方法执行这个线程,那么怎样使用join方法
}
System.out.println(Thread.currentThread().getName()+"---"+i);
}
}
public void run()
{
for(int i = 0; i < 100; i++)
{
System.out.println(Thread.currentThread().getName()+"---"+i);
}
}
}
复制代码
作者:
陈虹旭
时间:
2012-10-17 09:41
本帖最后由 陈虹旭 于 2012-10-17 09:44 编辑
我估计这种情况只能用匿名内部类的方法来做吧,代码有一点点小修改,本类中的run()中我设置了为60,方便分辨清晰些,你试试,希望可以对你有点帮助
public class JoinTest implements Runnable
{
/**
* @param args
*/
public static void main(String[] args) throws InterruptedException
{
// 启动一个线程
new Thread(new JoinTest()).start();
Thread t1 = new Thread()
{
public void run()
{
for(int i = 0; i < 100; i ++)
{
if(i >= 20)
{
System.out.println(Thread.currentThread().getName()+"---"+i);
}
}
}
};
t1.start();
t1.join();
}
public void run()
{
for(int i = 0; i < 60; i++)
{
System.out.println(Thread.currentThread().getName()+"---"+i);
}
}
}
复制代码
作者:
吴硕
时间:
2012-10-17 12:26
陈虹旭 发表于 2012-10-17 09:41
我估计这种情况只能用匿名内部类的方法来做吧,代码有一点点小修改,本类中的run()中我设置了为60,方便分 ...
很有帮助,谢谢
public class JoinTest implements Runnable
{
/**
* @param args
*/
public static void main(String[] args) throws InterruptedException
{
// 启动一个线程
new Thread(new JoinTest()).start();
for(int i = 0; i < 100; i ++)
{
if(i == 20)
{
Thread t = new Thread(new JoinTest());
t.start();
t.join();
}
System.out.println(Thread.currentThread().getName()+"---"+i);
}
}
public void run()
{
for(int i = 0; i < 1000; i++)
{
System.out.println(Thread.currentThread().getName()+"---"+i);
}
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2