有三種使用執行緒的方法:
推薦這個!!(實現這個介面的類還可以繼承自其它的類,用3.1就沒有辦法再去繼承別的類)class mythread extends thread
}public class test
}
step1:自定義類並實現rubbale介面,實現run()方法;
step2:建立thread物件,用實現runnable介面的物件作為引數例項化thread物件;
step3:呼叫thread的start()方法。
callable介面實際上是屬於executor框架中的功能類.class mythread implements runnable
}public class test
}
callable介面與runnable介面的功能類似,提供了比runnable更強大的功能,主要表現有三點:
callable可以在任務結束之後提供乙個返回值,返回值通過futuretask進行封裝,runnable則不能;
callable介面中的call()方法可以丟擲異常,而runnable()的run()方法不能丟擲異常;
執行callable可以拿到乙個future物件,future物件表示非同步計算的結果,提供了檢查計算是否完成的方法。當呼叫future的get()方法以獲取結果時,當前執行緒就會阻塞,直到call()方法結束返回結果。
執行結果:public static class callabletest implements callable}
public static void main(string args) catch (interruptedexception | executionexception e)
以上三種執行方式,前兩種執行完後都沒有返回值,最後一種帶返回值。
當實現多執行緒時,一般推薦實現runnable介面。
乙個類是否可以同時繼承thread與實現runnable?
可以。
其中,test類從thread類繼承的run()被認為是對runnable介面中run()的實現。public class test extends thread implements runnable
}
繼承thread類和實現runnable方法啟動執行緒都是使用start方法,然後jvm虛擬機器將此執行緒放到就緒佇列中,如果有處理機可用, 則執行run方法。
實現callable介面要實現call方法,並且執行緒執行完畢後會有返回值。其他的兩種都是重寫run方法,沒有返回值。
Java 多執行緒實現
在實際應用中我們不會在乙個手機或者電腦上進行單執行緒的開發或者使用,一般都是多執行緒。執行緒 程式中執行的具體事務 程序 表示正在執行的應用程式,乙個程序可以有多個執行緒。事實上執行緒是有執行順序的,但是由於cpu執行的速度非常快,所以覺得是在併發執行,其實是偽裝的併發執行。執行緒的實現有兩種方法 ...
java多執行緒售票實現
編寫售票的類,並實現runnable介面 package threadtest public class saletickets implements runnable else public void run catch interruptedexception e 測試類如下 package e...
java 多執行緒 之匿名內部類實現多執行緒
package 匿名內部類實現多執行緒 public class demo start 實現runnable介面實現多執行緒 new thread new runnable start 通過匿名內部類實現多執行緒,會比 實現runnable 和繼承 thread 會靈活一點,從傳參什麼 這樣就可以啟...