導航:首頁 > 編程語言 > java高級多線程

java高級多線程

發布時間:2022-03-06 02:53:35

『壹』 java多線程實現

程序如下:

/**
*
* GuiTuSaiPao.java
* @author Antonio
* 2009年9月2日20:16:33
* 實現Runnable介面中的run方法
*
*/
public class GuiTuSaiPao implements Runnable {
private String name;
private int length=0;

public GuiTuSaiPao(){}

public GuiTuSaiPao(String name){
this.name=name;
}

public void run(){
while(true){
//每次停500毫秒
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
//向前跑十米
length+=10;
System.out.println(name+"已跑了"+length+"米.");
//到達終點
if(length>=100){
System.out.println(name+",已經到達終點!");
//結束賽跑,break
break;
}
}
}

public static void main(String[] args) {
GuiTuSaiPao wugui=new GuiTuSaiPao("烏龜");
GuiTuSaiPao tuzi=new GuiTuSaiPao("兔子");
Thread thread=new Thread(wugui);
Thread thread2=new Thread(tuzi);
//啟動線程
thread.start();
thread2.start();

}

}

輸出結果:(不一定每次都一樣!)
烏龜已跑了10米.
兔子已跑了10米.
兔子已跑了20米.
烏龜已跑了20米.
烏龜已跑了30米.
兔子已跑了30米.
兔子已跑了40米.
烏龜已跑了40米.
兔子已跑了50米.
烏龜已跑了50米.
烏龜已跑了60米.
兔子已跑了60米.
烏龜已跑了70米.
兔子已跑了70米.
烏龜已跑了80米.
兔子已跑了80米.
兔子已跑了90米.
烏龜已跑了90米.
兔子已跑了100米.
兔子,已經到達終點!
烏龜已跑了100米.
烏龜,已經到達終點!

完全看rp,這就是線程!

給分吧,哈哈

『貳』 java中多線程常見的幾個參數

java中多線程常見的幾個參數
sleep:在指定的毫秒數內讓當前正在執行的線程休眠(暫停執行).
此操作受到系統計時器和調度程序精度和准確性的影響。
該線程不丟失任何監視器的所屬權。
調用sleep的時候鎖並沒有被釋放。
休眠
Java SE5引入了更加顯示的sleep()作為TimeUnit類的一部分,這個方法允許你指定sleep()延遲的時間單元,因此可以提供更好的可閱讀性。

wait:調用wait使線程掛起,直到線程得到了notify或notifyAll消息,線程才會進入就緒狀態。
使你可以等待某個條件發生變化,而改變這個條件超出了當前方法的控制能力。
線程的執行被掛起,對象上的鎖被釋放。意味著另一個任務可以獲得這個鎖。
因此在該對象中的其他synchronized方法可以在wait期間被調用。

yield:相當於:我的工作已經做的差不多了,可以讓給別的線程使用CPU了。
當調用yield時,你也是在建議具有相同優先順序的其他線程可以運行。
對於任何重要的控制或在調整應用時,都不能依賴於yield。
yield並不意味著退出和暫停,只是,告訴線程調度如果有人需要,可以先拿去,我過會再執行,沒人需要,我繼續執行
調用yield的時候鎖並沒有被釋放。

interrupt:中斷線程。
Thread類包含interrupt()方法,因此你可以中止被阻塞的任務。
這個方法將設置線程的中斷狀態。
如果一個線程已經被阻塞,或者試圖執行一個阻塞操作,那麼設置這個線程的中斷狀態將拋出InterruptedException。
當拋出該異常或者該任何調用Thread.interrupted()時,中斷狀態將復位。
你在Executor上調用shutdownNow(),那麼它將發送一個interrupt()調用給他啟動的所有線程。

『叄』 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的類都是可被其它線程執行的任務。
Callable和Runnable有幾點不同:
①Callable規定的方法是call(),而Runnable規定的方法是run().
②Callable的任務執行後可返回值,而Runnable的任務是不能返回值的
③call()方法可拋出異常,而run()方法是不能拋出異常的。
④運行Callable任務可拿到一個Future對象,Future表示非同步計算的結果。它提供了檢查計算是否完成的方法,以等
待計算的完成,並檢索計算的結果.通過Future對象可了解任務執行情況,可取消任務的執行,還可獲取任務執行的結果

『肆』 Java多線程最高可以開多少個線程

JAVA 最多可打開多少個線程:
如果系統性能夠好,無限大。
如何測試:寫個for循環,調用線程。for循環裡面設置上限,不斷調高上限,看什麼時候,系統會崩掉。

『伍』 java多線程

Thread.start()方法會啟動一個新的線程並在該線程上開始執行該Thread類構造方法中傳遞的那個Runnable對象的run方法。此時run方法運行於該新線程上,而線程名為"線程",因此run方法中輸出"線程"。而在main方法中手動地去調用run方法並不會創建並啟動一個新的線程,此時run方法與普通方法沒有區別,都運行於調用它的線程上,run方法是從main線程中調用的因此run方法中輸出"main"。

『陸』 java多線程的好處

1. 充分利用CPU資源
現在世界上大多數計算機只有一塊CPU.因此,充分利用CPU資源顯得尤為重要。當執行單線程程序時,由於在程序發生阻塞時CPU可能會處於空閑狀態。這將造成大量的計算資源的浪費。而在程序中使用多線程可以在某一個線程處於休眠或阻塞時,而CPU又恰好處於空閑狀態時來運行其他的線程。這樣CPU就很難有空閑的時候。因此,CPU資源就得到了充分地利用。
2. 簡化編程模型
如果程序只完成一項任務,那隻要寫一個單線程的程序,並且按著執行這個任務的步驟編寫代碼即可。但要完成多項任務,如果還使用單線程的話,那就得在在程序中判斷每項任務是否應該執行以及什麼時候執行。如顯示一個時鍾的時、分、秒三個指針。使用單線程就得在循環中逐一判斷這三個指針的轉動時間和角度。如果使用三個線程分另來處理這三個指針的顯示,那麼對於每個線程來說就是指行一個單獨的任務。這樣有助於開發人員對程序的理解和維護。
3. 簡化非同步事件的處理
當一個伺服器應用程序在接收不同的客戶端連接時最簡單地處理方法就是為每一個客戶端連接建立一個線程。然後監聽線程仍然負責監聽來自客戶端的請求。如果這種應用程序採用單線程來處理,當監聽線程接收到一個客戶端請求後,開始讀取客戶端發來的數據,在讀完數據後,read方法處於阻塞狀態,也就是說,這個線程將無法再監聽客戶端請求了。而要想在單線程中處理多個客戶端請求,就必須使用非阻塞的Socket連接和非同步I/O.但使用非同步I/O方式比使用同步I/O更難以控制,也更容易出錯。因此,使用多線程和同步I/O可以更容易地處理類似於多請求的非同步事件。
4. 使GUI更有效率
使用單線程來處理GUI事件時,必須使用循環來對隨時可能發生的GUI事件進行掃描,在循環內部除了掃描GUI事件外,還得來執行其他的程序代碼。如果這些代碼太長,那麼GUI事件就會被「凍結」,直到這些代碼被執行完為止。
在現代的GUI框架(如SWING、AWT和SWT)中都使用了一個單獨的事件分派線程(event dispatch thread,EDT)來對GUI事件進行掃描。當我們按下一個按鈕時,按鈕的單擊事件函數會在這個事件分派線程中被調用。由於EDT的任務只是對GUI事件進行掃描,因此,這種方式對事件的反映是非常快的。
5. 節約成本
提高程序的執行效率一般有三種方法:
(1)增加計算機的CPU個數。
(2)為一個程序啟動多個進程
(3)在程序中使用多進程。
第一種方法是最容易做到的,但同時也是最昂貴的。這種方法不需要修改程序,從理論上說,任何程序都可以使用這種方法來提高執行效率。第二種方法雖然不用購買新的硬體,但這種方式不容易共享數據,如果這個程序要完成的任務需要必須要共享數據的話,這種方式就不太方便,而且啟動多個線程會消耗大量的系統資源。第三種方法恰好彌補了第一種方法的缺點,而又繼承了它們的優點。也就是說,既不需要購買CPU,也不會因為啟太多的線程而佔用大量的系統資源(在默認情況下,一個線程所佔的內存空間要遠比一個進程所佔的內存空間小得多),並且多線程可以模擬多塊CPU的運行方式,因此,使用多線程是提高程序執行效率的最廉價的方式。

『柒』 java有多線程機制

線程是依附於進程的,進程是分配資源的最小單位,一個進程可以生成多個線程,這些線程擁有共享的進程資源。就每個線程而言,只有很少的獨有資源,如控制線程運行的線程式控制制塊,保留局部變數和少數參數的棧空間等。線程有就緒、阻塞和運行三種狀態,並可以在這之間切換。也正因為多個線程會共享進程資源,所以當它們對同一個共享變數/對象進行操作的時候,線程的沖突和不一致性就產生了。線程這個概念在這里就不詳述了,如果還不是很清楚地,可以查些相關資料。

多線程並發環境下,本質上要解決地是這兩個問題:

『捌』 Java 多線程

for(int i=0;i<00;i++)//這里i的值寫錯了 改一下就是了
{
System.out.println("Main 函數:---"+i);
}

還有 你這里看著好像是有100個線程是吧 其實這一百次輸出只是一個線程在輸出 你只開啟了一個Thread
也就是只開啟了一個線程

『玖』 如何掌握java多線程,高並發,大數據方面的技能

線程:同一類線程共享代碼和數據空間,每個線程有獨立的運行棧和程序計數器(PC),線程切換開銷小。(線程是cpu調度的最小單位)
線程和進程一樣分為五個階段:創建、就緒、運行、阻塞、終止。
多進程是指操作系統能同時運行多個任務(程序)。
多線程是指在同一程序中有多個順序流在執行。
在java中要想實現多線程,有兩種手段,一種是繼續Thread類,另外一種是實現Runable介面.(其實准確來講,應該有三種,還有一種是實現Callable介面,並與Future、線程池結合使用。

閱讀全文

與java高級多線程相關的資料

熱點內容
優信二手車解壓後過戶 瀏覽:62
Windows常用c編譯器 瀏覽:778
關於改善國家網路安全的行政命令 瀏覽:833
安卓如何下載網易荒野pc服 瀏覽:654
javainetaddress 瀏覽:104
蘋果4s固件下載完了怎麼解壓 瀏覽:1003
命令zpa 瀏覽:286
python編譯器小程序 瀏覽:945
在app上看視頻怎麼光線調暗 瀏覽:540
可以中文解壓的解壓軟體 瀏覽:593
安卓卸載組件應用怎麼安裝 瀏覽:913
使用面向對象編程的方式 瀏覽:340
程序員項目經理的年終總結範文 瀏覽:930
內衣的加密設計用來幹嘛的 瀏覽:433
淮安數據加密 瀏覽:292
魔高一丈指標源碼 瀏覽:982
松下php研究所 瀏覽:168
c回調java 瀏覽:401
夢幻端游長安地圖互通源碼 瀏覽:746
電腦本地文件如何上傳伺服器 瀏覽:314