1. 繼承thread類,重寫run方法,new出物件.start()即可。
public class thread3 extends thread}}
2. 實現runnable介面,實現run方法,把實現類的物件obj傳給new thread(obj),再用thread 類的物件.start()方法來啟動執行緒。
public class thread2 implements runnable }}
//測試類
public class testthread
}注意:不能直接呼叫run方法,啟動執行緒必須使用start()方法,直接呼叫run方法是相當於直接呼叫普通方法
直接繼承thread的可以用(thread.currentthread()獲取當前執行的執行緒)或this.getname()/setname()方法來得到或者賦予乙個執行緒名字。
實現runnable介面的用thread.currentthread()獲取當前執行的執行緒或thread.currentthread().getname()/setname()方法來得到或者賦予乙個執行緒名字。這裡沒有this。
區別:實現runnable介面有何優點?
1. 解決了單繼承的問題,乙個類只能繼承乙個類,類繼承了thread類之後就不能再繼承其他類了。實現runnable介面,還可以繼承其他類,實現其他介面。
2. 增強了程式的擴充套件性,降低了程式的耦合性(解耦)
實現runnable介面的方式,把設定執行緒任務和開啟執行緒進行了分離(解耦)。實現類中,重寫了run方法,用來設定執行緒任務,建立thread類的物件,呼叫start方法,用來開啟新執行緒。
3.建議以後使用中用實現runnable介面的方式
1. 繼承thread類,重寫run方法,new出物件.start()即可。
public class thread3 extends thread}}
2. 實現runnable介面,實現run方法,把實現類的物件obj傳給new thread(obj),再用thread 類的物件.start()方法來啟動執行緒。
public class thread2 implements runnable }}
//測試類
public class testthread
}注意:不能直接呼叫run方法,啟動執行緒必須使用start()方法,直接呼叫run方法是相當於直接呼叫普通方法
直接繼承thread的可以用(thread.currentthread()獲取當前執行的執行緒)或this.getname()/setname()方法來得到或者賦予乙個執行緒名字。
實現runnable介面的用thread.currentthread()獲取當前執行的執行緒或thread.currentthread().getname()/setname()方法來得到或者賦予乙個執行緒名字。這裡沒有this。
區別:實現runnable介面有何優點?
1. 解決了單繼承的問題,乙個類只能繼承乙個類,類繼承了thread類之後就不能再繼承其他類了。實現runnable介面,還可以繼承其他類,實現其他介面。
2. 增強了程式的擴充套件性,降低了程式的耦合性(解耦)
實現runnable介面的方式,把設定執行緒任務和開啟執行緒進行了分離(解耦)。實現類中,重寫了run方法,用來設定執行緒任務,建立thread類的物件,呼叫start方法,用來開啟新執行緒。
3.建議以後使用中用實現runnable介面的方式
多執行緒的兩種啟動方式的簡單總結
1.繼承thread類,重寫run方法,new出物件.start 即可。public class thread3 extends thread 2.實現runnable介面,實現run方法,把實現類的物件obj傳給new thread obj 再用thread 類的物件.start 方法來啟動執行緒...
多執行緒同步的兩種方式
這是我昨天練習的多執行緒同步問題 解決方法一 輪詢 import threading import time count 500 全域性變數 user input1 input 請輸入金額 終端輸入消費金額 user input2 input 請輸入消費金額 flag false 這裡設定標識位,為...
實現多執行緒的兩種方式
一 什麼是執行緒?定義 執行緒是程序中的乙個執行單元,負責當前程序中程式的執行,乙個程序中至少有乙個執行緒。乙個程序中是可以有多個執行緒的,這個應用程式也可以稱之為多執行緒程式。簡而言之 乙個程式執行後至少有乙個程序,乙個程序中可以包含多個執行緒 二 怎麼實現多執行緒?下面的兩種方式婦孺皆知 1.繼...