# 爸爸和兒子的故事帶你理解java線程
今天回顧線程方面的知識,發現一個很有意思的小程序,是用來說明多線程的下面貼出來分享下,對初學者理解線程有很大的幫助
爸爸和兒子的故事
~~~
public class FatherThread extends Thread{
@Override
public void run() {
System.out.println("爸爸想抽煙,發現煙抽完了");
System.out.println("爸爸讓兒子去買包紅塔山");
Thread son = new SonThread();
son.start();
System.out.println("爸爸等兒子買煙回來");
try {
//join含義:等待son線程執行完畢,father線程才繼續執行
son.join();
}
catch (InterruptedException e) {
System.out.println("爸爸出門去找兒子跑哪去了");
System.exit(1);
}
System.out.println("爸爸高興的接過煙開始抽,并把零錢給了兒子");
}
}
~~~
~~~
public class SonThread extends Thread{
@Override
public void run() {
String tags ="\t\t\t\t\t";
System.out.println(tags+"兒子去買煙了");
System.out.println(tags+"兒子去買煙要10分鐘");
try {
for(int i =0; i<10;){
Thread.sleep(1000);
System.out.println(tags+"兒子出去第"+ ++i +"分鐘");
}
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(tags+"兒子去買煙回來了");
}
}
~~~
~~~
public class Main {
public static void main(String[] args){
System.out.println("爸爸和兒子的故事");
Thread faThread =new FatherThread();
faThread.start();
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
~~~
運行結果
爸爸和兒子的故事
爸爸想抽煙,發現煙抽完了
爸爸讓兒子去買包紅塔山
爸爸等兒子買煙回來
兒子去買煙了
兒子去買煙要10分鐘
兒子出去第1分鐘
兒子出去第2分鐘
兒子出去第3分鐘
兒子出去第4分鐘
兒子出去第5分鐘
兒子出去第6分鐘
兒子出去第7分鐘
兒子出去第8分鐘
兒子出去第9分鐘
兒子出去第10分鐘
兒子去買煙回來了
爸爸高興的接過煙開始抽,并把零錢給了兒子
程序進入主函數,首先father線程開始執行。爸爸讓兒子去買煙,然后等待兒子買煙回來,這時son線程啟動10分鐘后兒子回來fathrer線程繼續執行。