這篇文章介紹基於java學習中多執行緒的實作方法
1 繼承Thread類別
#繼承Thread類別的方法儘管被我列為一種多執行緒實作方式,但Thread本質上也是實作了Runnable介面的一個實例,它代表一個執行緒的實例,並且,啟動執行緒的唯一方法就是透過Thread類別的start()實例方法。 start()方法是一個native方法,它將啟動一個新線程,並執行run()方法。這種方式實作多執行緒很簡單,透過自己的類別直接extend Thread,並複寫run()方法,就可以啟動新執行緒並執行自己定義的run()方法。
public class MyThread extends Thread { public void run() { System.out.println("MyThread.run()"); } } //启动线程 MyThread myThread1 = new MyThread(); MyThread myThread2 = new MyThread(); myThread1.start(); myThread2.start();
2 實作Runnable介面
如果一個類別繼承另一個類,就無法繼承Thread類別(java中不支援多重繼承),這樣就要實作Runnable接口,在實作類別中重寫run()方法,在main方法中實作多執行緒:實例化一個實作類別對象,並初始化Thread類別的對象,把實作類別傳入到Thread的物件裡。事實上,當傳入一個Runnable target參數給Thread後,Thread的run()方法就會呼叫target.run()。
//实现Runnable接口 public class MyThread extends OtherClass implements Runnable { public void run() { System.out.println("MyThread.run()"); } } //复写run()方法 public void run() { if (target != null) { target.run(); } } //实例化对象 MyThread myThread = new MyThread(); Thread thread = new Thread(myThread); thread.start();
3 使用ExecutorService、Callable、Future實作有回傳結果的多執行緒
這部分內容還未學到佔時不作記錄,以後補充
以上是基於java學習中多執行緒的實作方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!