Java多執行緒交替輸出01010

2021-07-27 03:22:06 字數 1503 閱讀 4190

1.先簡單了解多執行緒併發,同步和非同步的概念

多執行緒併發時,多個執行緒同時請求同乙個資源,必然導致此資源的資料不安全,a執行緒修改了b執行緒的處理的資料,而b執行緒又修改了a執行緒處理的數理。顯然這是由於全域性資源造成的,有時為了解 決此問題,優先考慮使用區域性變數,退而求其次使用同步**塊,出於這樣的安全考慮就必須犧牲 系統處理效能,加在多執行緒併發時資源掙奪最激烈的地方,這就實現了執行緒的同步機制

同步:a執行緒要請求某個資源,但是此資源正在被b執行緒使用中,因為同步機制存在,a執行緒請求不到,怎麼辦,a執行緒只能等待下去
非同步:a執行緒要請求某個資源,但是此資源正在被b執行緒使用中,因為沒有同步機制存在,a執行緒仍然請求的到,a執行緒無需等待 

顯然,同步最最安全,最保險的。而非同步不安全,容易導致死鎖,這樣乙個執行緒死掉就會導致整個程序崩潰,但沒有同步機制的存在,效能會有所提公升

2.通過**介紹實現多執行緒交替輸出010101......
/**

* 交替輸出0101010101010101......

*/public classalternateoutputzerooneimplementsrunnable

system.out.println("count="+count);

}public synchronized voidalternateoutput()else

//通知其他執行緒去啟用

notify();

// thread.sleep(1000);

}catch(interruptedexception e)

}else if(thread.currentthread().getname().equals("b"))else

//通知其他執行緒去啟用

notify();

// thread.sleep(1000);

}catch(interruptedexception e) }}

}

呼叫方法如下
alternateoutputzeroone run =newalternateoutputzeroone();

thread a =newthread(run);

a.setname("a");

thread b =newthread(run);

b.setname("b");

a.start();

b.start();

多執行緒 交替輸出文字

用兩個執行緒,乙個輸出字母,乙個輸出數字,交替輸出1a2b3c4d5e6g class demo t1 t2 new thread t2 locksupport.park 阻塞當前的執行緒 locksupport.unpark 喚醒執行緒應用的領域,速度執行的快,執行的執行緒少的情況,自旋鎖需要占用...

java多執行緒問題,執行緒交替執行

兩個執行緒,乙個列印1 100的奇數,乙個列印1 100的偶數 要求 執行緒1列印5個之後,執行緒2開始列印,執行緒2列印5個之後,執行緒1再開始列印,以此迴圈。package threadtest public class test1 catch interruptedexception e 當s...

多執行緒案例1 奇偶交替輸出

嘗試寫了乙個奇偶交替輸出的demo,記錄一下問題 原來的執行緒類是如下 1 package com.future.day0521 23 public class demo1 catch interruptedexception e 22 23 24thread.yield 25 26 27 2829...