當前位置:首頁 » 編程語言 » java創建線程的方法

java創建線程的方法

發布時間: 2022-10-03 10:38:17

1. java中學習線程應該怎麼去學習

打個比方,用戶注冊,如果用戶注冊有如下步驟

1:給用戶在資料庫中添加用戶信息

2:給用戶的手機號發送歡迎簡訊

3:系統中其它模塊和用戶關聯,需要同時添加其它的數據

這個時候,如果使用單線程,用戶提交注冊信息之後,系統拿到注冊信息,就要按照步驟1,2,3這么一步一步走下去,在這過程中,用戶只能等待,等到系統把這些步驟走完了,用戶才能得到響應,才能登陸系統,這個過程會很長,用戶體驗不好

但是如果使用多線程,在拿到用戶注冊信息之後,主進程把這些任務分給多個線程去做,每個線程做一件事,效率是不是提高了,時間是不是縮短了,並且,主線程可以把關鍵信息錄入系統之後就直接響應用戶,其它事情可以讓線程在後台慢慢執行,這樣用戶體驗就會好很多。

2. JAVA面試題 JAVA中創建線程有幾種不同的方式

第一種方式:使用Runnable介面創建線程
第二種方式:直接繼承Thread類創建對象
使用Runnable介面創建線程
1.可以將CPU,代碼和數據分開,形成清晰的模型
2.線程體run()方法所在的類可以從其它類中繼承一些有用的屬性和方法
3.有利於保持程序的設計風格一致
直接繼承Thread類創建對象
1.Thread子類無法再從其它類繼承(java語言單繼承)。
2.編寫簡單,run()方法的當前對象就是線程對象,可直接操作。
在實際應用中,幾乎都採取第一種方式

3. 創建線程有幾種方式和Java中常用的線程池

java創建線程的方式有三種
第一種是繼承Thread類 實現方法run() 不可以拋異常 無返回值
第二種是實現Runnable介面 實現方法run() 不可以拋異常 無返回值
第三種是實現Callable<T>介面,介面中要覆蓋的方法是 public <T> call() 注意:此方法可以拋異常,而前兩種不能 而且此方法可以有返回值

第三種如何運行呢 Callable介面在util.concurrent包中,由線程池提交
import java.util.concurrent.*;
ExecutorService e = Executors.newFixedThreadPool(10); 參數表示最多可以運行幾個線程
e.submit(); 這個裡面參數傳 實現Callable介面那個類的對象

4. java怎麼實現線程

  • 1、繼承Thread類創建線程

Thread類本質上是實現了Runnable介面的一個實例,代表一個線程的實例。啟動線程的唯一方法就是通過Thread類的start()實例方法。start()方法是一個native方法,它將啟動一個新線程,並執行run()方法。這種方式實現多線程很簡單,通過自己的類直接extend Thread,並復寫run()方法,就可以啟動新線程並執行自己定義的run()方法。

  • 2、實現Runnable介面創建線程

如果自己的類已經extends另一個類,就無法直接extends Thread,此時,可以實現一個Runnable介面。

  • 3、實現Callable介面通過FutureTask包裝器來創建Thread線程

  • 4、使用ExecutorService、Callable、Future實現有返回結果的線程

ExecutorService、Callable、Future三個介面實際上都是屬於Executor框架。返回結果的線程是在JDK1.5中引入的新特徵,有了這種特徵就不需要再為了得到返回值而大費周折了。而且自己實現了也可能漏洞百出。

可返回值的任務必須實現Callable介面。類似的,無返回值的任務必須實現Runnable介面。

執行Callable任務後,可以獲取一個Future的對象,在該對象上調用get就可以獲取到Callable任務返回的Object了。

注意:get方法是阻塞的,即:線程無返回結果,get方法會一直等待。

再結合線程池介面ExecutorService就可以實現傳說中有返回結果的多線程了。

5. java有幾種實現線程的方式

有三種:

(1)繼承Thread類,重寫run函數

創建:class xx extends Thread{ public void run(){Thread.sleep(1000) //線程休眠1000毫秒,sleep使線程進入Block狀態,並釋放資源}}

開啟線程:對象.start() //啟動線程,run函數運行

(2)實現Runnable介面,重寫run函數

開啟線程:Thread t = new Thread(對象) //創建線程對象t.start()

(3)實現Callable介面,重寫call函數

Callable是類似於Runnable的介面,實現Callable介面的類和實現Runnable的類都是可被其它線程執行的任務。

6. java多線程有幾種實現方法

  • 繼承Thread類來實現多線程:

  • 當我們自定義的類繼承Thread類後,該類就為一個線程類,該類為一個獨立的執行單元,線程代碼必須編寫在run()方法中,run方法是由Thread類定義,我們自己寫的線程類必須重寫run方法。

    run方法中定義的代碼為線程代碼,但run方法不能直接調用,如果直接調用並沒有開啟新的線程而是將run方法交給調用的線程執行

    要開啟新的線程需要調用Thread類的start()方法,該方法自動開啟一個新的線程並自動執行run方法中的內容


    *java多線程的啟動順序不一定是線程執行的順序,各個線程之間是搶佔CPU資源執行的,所有有可能出現與啟動順序不一致的情況。


    CPU的調用策略:

    如何使用CPU資源是由操作系統來決定的,但操作系統只能決定CPU的使用策略不能控制實際獲得CPU執行權的程序。


    線程執行有兩種方式:


    1.搶占式:

    目前PC機中使用最多的一種方式,線程搶佔CPU的執行權,當一個線程搶到CPU的資源後並不是一直執行到此線程執行結束,而是執行一個時間片後讓出CPU資源,此時同其他線程再次搶佔CPU資源獲得執行權。


    2.輪循式;

    每個線程執行固定的時間片後讓出CPU資源,以此循環執行每個線程執行相同的時間片後讓出CPU資源交給下一個線程執行。

7. java中怎麼創建線程

Java使用Thread類代表線程,所有的線程對象都必須是Thread類或其子類的實例。Java可以用三種方式來創建線程,如下所示:
1)繼承Thread類創建線程
2)實現Runnable介面創建線程
3)使用Callable和Future創建線程

8. java創建線程的幾種方式

簡單的,就是繼承thead類,覆蓋run方法
復雜點的就是實現runnable介面,實現run方法,調用用thread. currentthread方法

9. java怎麼創建一個線程

Java線程類也是一個object類,它的實例都繼承自java.lang.Thread或其子類。可以用如下方式用java中創建一個線程:

Treadthread=newThread();

執行該線程可以調用該線程的start()方法:

thread.start();

編寫線程運行時執行的代碼有兩種方式:一種是創建Thread子類的一個實例並重寫run方法,第二種是創建類的時候實現Runnable介面。接下來我們會具體講解這兩種方法:

創建Thread的子類

創建Thread子類的一個實例並重寫run方法,run方法會在調用start()方法之後被執行。例子如下:

{
publicvoidrun(){
System.out.println("MyThreadrunning");
}
}

可以用如下方式創建並運行上述Thread子類

MyThreadmyThread=newMyThread();
myTread.start();

一旦線程啟動後start方法就會立即返回,而不會等待到run方法執行完畢才返回。就好像run方法是在另外一個cpu上執行一樣。當run方法執行後,將會列印出字元串MyThread running。

實現Runnable介面

第二種編寫線程執行代碼的方式是新建一個實現了java.lang.Runnable介面的類的實例,實例中的方法可以被線程調用。下面給出例子:

{
publicvoidrun(){
System.out.println("MyRunnablerunning");
}
}

為了使線程能夠執行run()方法,需要在Thread類的構造函數中傳入MyRunnable的實例對象。示例如下:

Threadthread=newThread(newMyRunnable());
thread.start();

當線程運行時,它將會調用實現了Runnable介面的run方法。上例中將會列印出」MyRunnable running」。

10. java創建線程有幾種方式

java創建線程的方式有三種
第一種是繼承Thread類 實現方法run() 不可以拋異常 無返回值
第二種是實現Runnable介面 實現方法run() 不可以拋異常 無返回值
第三種是實現Callable<T>介面,介面中要覆蓋的方法是 public <T> call() 注意:此方法可以拋異常,而前兩種不能 而且此方法可以有返回值

第三種如何運行呢 Callable介面在util.concurrent包中,由線程池提交
import java.util.concurrent.*;
ExecutorService e = Executors.newFixedThreadPool(10); 參數表示最多可以運行幾個線程
e.submit(); 這個裡面參數傳 實現Callable介面那個類的對象

熱點內容
rankpython 發布:2022-12-09 00:24:46 瀏覽:95
空氣壓縮熱學 發布:2022-12-09 00:22:48 瀏覽:413
編譯技術發展史 發布:2022-12-09 00:19:57 瀏覽:202
android播放器源碼 發布:2022-12-09 00:15:30 瀏覽:640
怎麼快速配置多台相同配置交換機 發布:2022-12-09 00:12:08 瀏覽:549
linux修改文件許可權命令 發布:2022-12-09 00:10:15 瀏覽:177
清理微信緩存聊天記錄 發布:2022-12-09 00:07:46 瀏覽:879
電腦花生殼伺服器 發布:2022-12-09 00:02:12 瀏覽:851
島風go緩存 發布:2022-12-08 23:58:14 瀏覽:40
在編譯階段會報錯的是 發布:2022-12-08 23:57:07 瀏覽:368