java线程方法_Java线程的三种方式
創建線程有三種方式:
1.繼承Thread類
2.實現Runnable接口
3.使用Callable和Future創建線程
三種方式詳解如下:
---------------------------------------------------------------------------
1.繼承Thread類創建線程類
(1).重寫run()方法,run()方法即是線程的執行體
(2).實例化線程類
(3).調用start()方法,啟動線程
代碼示例:
public class MyThread extendsThread {int i = 0;public voidrun() {for(; i <= 50;i++) {
System.out.println(getName()+i);
}
}public static voidmain(String args[]) {for(int i=0;i <= 50;i++) {if(i == 10) {
MyThread myThread= newMyThread();
myThread.start();
}
}
}
}
2.創建實現Runnable接口的線程類:
(1)重寫run()方法,run()方法是線程的執行體
(2)創建線程類的實例,并以該實例為對象創建Thread類的實例,Thread類對象才是真正的線程對象
(3)通過Thread對象調用start()方法,啟動線程
代碼示例:
public class MyRunnable implementsRunnable {private inti;
@Overridepublic voidrun() {//TODO Auto-generated method stub
for(int i=0; i<=50;i++) {
System.out.println(Thread.currentThread().getName()+i);
}
}public static voidmain(String args[]) {
MyRunnable myRunnable= newMyRunnable();
Thread thread= new Thread(myRunnable, "new Thread");
thread.start();
}
}
3.通過Callable和Future創建線程:
(1)創建Callable接口的實現類,并實現call()方法,該call()方法將作為線程執行體,并且有返回值。
(2)創建Callable實現類的實例,使用FutureTask類來包裝Callable對象,該FutureTask對象封裝了該Callable對象的call()方法的返回值
(3)使用FutureTask對象作為Thread對象的參數創建并啟動新線程
(4)調用FutureTask對象的get()方法來獲得子線程執行結束后的返回值
代碼示例:
importjava.util.concurrent.Callable;importjava.util.concurrent.FutureTask;public class CallableThread implements Callable{
@Overridepublic Integer call() throwsException {//TODO Auto-generated method stub
int i = 0;for(;i<=50;i++) {
System.out.println(Thread.currentThread().getName()+i);
}returni;
}public static voidmain(String args[]) {
CallableThread ct= newCallableThread();
FutureTask ft = new FutureTask<>(ct);for(int i=0;i <= 50;i++) {new Thread(ft,"返回線程").start();
}try{
System.out.println("線程的返回值:" +ft.get());
}catch(Exception e) {//TODO: handle exception
e.printStackTrace();
}
}
}
通過以上的代碼實例,我們可以看到:
基于Runnablehe和Callable接口實現的線程類比較靈活,可繼承其他類,適合多個線程處理同一個資源的情況,但與此同時代碼較復雜,訪問當前線程時要使用Thread.currentThread()方法。
而繼承Thread實現的線程類在訪問當前線程時只使用this即可訪問,但因為繼承了Thread類,不能再繼承其他類
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的java线程方法_Java线程的三种方式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python selenium爬虫豆瓣_
- 下一篇: java类和对象实例对象_Java类、对