java中的join用法


t1.join();

在誰里面調用就把誰阻塞

join()方法的作用,是等待這個線程結束;
也就是說,t.join()方法 阻塞調用此方法的線程(calling thread)進入 TIMED_WAITING 狀態,直到線程t完成,此線程再繼續;
通常用於在main()主線程內,等待其它線程完成再結束main()主線程。

t1.join在main里面執行的,所以main線程被阻塞了,直到t1線程執行完畢,才執行main函數的線程

 

 

 

 

 

 

 

 


public class lx01 {

/*
* 實現多線程的兩種方法
* 1、繼承Thread類
* 2、實現Runnable接口(推薦使用)
* */
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(Thread.currentThread().getName());
MyThread t1= new MyThread();
t1.start();

//System.out.println("isAlive: "+t1.isAlive());

MyRunnable r = new MyRunnable();
Thread t2 =new Thread(r);
System.out.println("isAlive: "+t2.isAlive());//false
t2.start();
System.out.println("isAlive: "+t2.isAlive());//true

for(int i=0;i<10;i++)
{
try {
System.out.println(System.currentTimeMillis()+"-"+i+"--"+Thread.currentThread().getName());
Thread.sleep(500);
} catch (InterruptedException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
if(i==6)
{
try {
t1.join();/*

在誰里面調用就把誰阻塞

join()方法的作用,是等待這個線程結束;
也就是說,t.join()方法 阻塞調用此方法的線程(calling thread)進入 TIMED_WAITING 狀態,直到線程t完成,此線程再繼續;
通常用於在main()主線程內,等待其它線程完成再結束main()主線程。

t1.join在main里面執行的,所以main線程被阻塞了,直到t1線程執行完畢,才執行main函線程*/
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

}
static class MyThread extends Thread //Thread就是繼承Runnable
{
public void run()
{
for(int i=0;i<10;i++)
{
try {
Thread.sleep(500);
} catch (InterruptedException e) {//中斷異常
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(System.currentTimeMillis()+"-"+i+"--"+Thread.currentThread().getName());
}
}
}
//輕耦合,實現Runnable接口的方式啟動線程
static class MyRunnable implements Runnable
{
@Override
public void run() {
// TODO Auto-generated method stub
for(int i=0;i<10;i++)
{
try {
Thread.sleep(500);
} catch (InterruptedException e) {//中斷異常
// TODO Auto-generated catch block
e.printStackTrace();
}

System.out.println(System.currentTimeMillis()+"-"+i+"--"+Thread.currentThread().getName());
}
}
}

/*
* 推薦第二種 方法
* 第一種已經繼承了Thread類,無法繼承其他類,如果第二種還可以繼承其他類

*/

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM