/**
join() 方法定义在 Thread 类中,所以调用者必须是一个线程,
join() 方法主要是让调用该方法的 Thread 完成 run() 方法里面的东西后,
再执行 join() 方法后面的代码,看下下面的"意思"代码:
Thread t1 = new Thread(计数线程一);
Thread t2 = new Thread(计数线程二);
t1.start();
t1.join(); // 等待计数线程一执行完成,再执行计数线程二
t2.start();
启动 t1 后,调用了 join() 方法,直到 t1 的计数任务结束,才轮到 t2 启动,
然后 t2 才开始计数任务,两个线程是按着严格的顺序来执行的。如果 t2 的执行需要依赖于 t1 中的完整数据的时候,
这种方法就可以很好的确保两个线程的同步性。
*/
public class ThreadFlag extends Thread
{
public volatile boolean exit = false;//设置停止标志位
public void run()
{
while (!exit);
}
public static void main(String[] args) throws Exception
{
ThreadFlag thread = new ThreadFlag();
thread.start();
sleep(5000); // 主线程延迟5秒
thread.exit = true; // 设置终止子线程thread
thread.join(); //join
System.out.println("线程退出!");
}
}
join() 方法定义在 Thread 类中,所以调用者必须是一个线程,
join() 方法主要是让调用该方法的 Thread 完成 run() 方法里面的东西后,
再执行 join() 方法后面的代码,看下下面的"意思"代码:
Thread t1 = new Thread(计数线程一);
Thread t2 = new Thread(计数线程二);
t1.start();
t1.join(); // 等待计数线程一执行完成,再执行计数线程二
t2.start();
启动 t1 后,调用了 join() 方法,直到 t1 的计数任务结束,才轮到 t2 启动,
然后 t2 才开始计数任务,两个线程是按着严格的顺序来执行的。如果 t2 的执行需要依赖于 t1 中的完整数据的时候,
这种方法就可以很好的确保两个线程的同步性。
*/
public class ThreadFlag extends Thread
{
public volatile boolean exit = false;//设置停止标志位
public void run()
{
while (!exit);
}
public static void main(String[] args) throws Exception
{
ThreadFlag thread = new ThreadFlag();
thread.start();
sleep(5000); // 主线程延迟5秒
thread.exit = true; // 设置终止子线程thread
thread.join(); //join
System.out.println("线程退出!");
}
}