1、實現Runnable接口創建線程
由于Java是單繼承機制,如果自己的類已經繼承自另一個類,則無法再直接繼承Thread類,此時,可以通過實現Runnable接口來實現多線程。
實現Runnable接口并實現其中的run方法,然后通過構造Thread實例,傳入Runnable實現類,然后調用Thread的start方法即可開啟一個新線程。
2、繼承Thread類創建線程
Thread類本質上也是實現了Runnable接口的一個實例,代表一個線程的實例。啟動線程的唯一方法就是通過Thread類的start()實例方法。
start()方法是一個native方法,它將啟動一個新線程,并執行run()方法。這種方式實現多線程比較簡單,通過繼承Thread類并復寫run()方法,就可以啟動新線程并執行自己定義的run()方法。
3、使用ExecutorService、Callable、Future實現有返回結果的線程(線程池方式)
ExecutorService、Callable、Future三個接口都是屬于Executor框架。可返回值的任務必須實現Callable接口。通過ExecutorService執行Callable任務后,可以獲取到一個Future的對象,在該對象上調用get()就可以獲取到Callable任務返回的結果了。
4、實現Callable接口通過FutureTask包裝器來創建Thread線程
首先需要一個實現Callable接口的實例,然后實現該接口的唯一方法call邏輯,接著把Callable實例包裝成FutureTask傳遞給Thread實例啟動新線程。
FutureTask本質上也實現了Runnable接口,所以同樣可以用來構造Thread實例。
以上就是四種實現java多線程方式介紹的內容。