1. 程式人生 > >第一章 Java多線程技能

第一章 Java多線程技能

主線程 src nds java 出現 圖片 情況 read 執行

Thread類

核心方法較多

如: 線程的啟動,

如何使線程暫停,

如何使線程停止,

線程的優先級,

線程安全相關的問題

1.1進程和線程的概念及線程的優點

多線程的優點:可以最大限度地利用CPU的空閑時間來處理其他的任務

單任務環境(同步) 排隊等待

多任務(多線程) 異步 大大利用CPU

1.2使用多線程

一個進程正在運行時至少會有1個線程在運行

main的線程在執行main()方法中的代碼

public class Test {
  public static void main(String[] args) {
    System.out.println(Thread.currentThread().getName());
}
}

1.2.1繼承Thread類

實現多線程編程的方式:1.繼承Thread類,2.實現Runnable接口

Thread類實現了Runnable接口,之間具有多態關系,不支持多繼承,所以為了多繼承,可以一邊實現一邊繼承

class Thread implements Runnable

1.繼承Thread
2.重寫run()方法,寫線程要執行的任務的代碼

public class MyThread  extends Thread{
 
   @Override
   public void run() {
    // TODO Auto-generated method stub
super.run();
System.out.println("MYthread"); } }

運行代碼類如下

public class Run {
   public static void main(String[] args) {
    MyThread myThread = new MyThread();
    myThread.start();
    System.out.println("運行結束");
}
}

線程是一個子任務,CPU以不確定的方式或者以隨機的時間來調用線程中的run方法,所以就會出現先運行結束再打印MyThread的情況

技術分享圖片

註意事項:如果多次調用start(方法會出現異常)


演示線程的隨機性

Thread類中的Start()方法通知"線程規劃期"此線程已經準備就緒,等待調用線程的Run()方法.這個過程其實就是讓系統安排一個時間來調用Thread類中的Run()方法,也就是使線程的到運行,啟動線程具有異步執行的效果

如果調用thread.run()就不是異步,而是同步,那麽此線程並不交給"線程規劃器"來處理,而是由main主線程來調用run()方法,也就是必須等run(),方法中的代碼執行完後才可以執行後面的代碼

異步執行效果圖

技術分享圖片

註意事項:執行Start()方法的順序不代表啟動線程的順序,線程啟動順序與start()無關


1.2.1實現Runnable接口

如果創建的線程已經有父類了 ,則不能繼承Thread類,則通過實現Runnable接口

第一章 Java多線程技能