github:
今天我們講最後乙個同步工具類exchanger
,這個比較簡單,就是讓兩個執行緒交換資料.
exchanger
只有兩個方法而已,而且兩個還是一樣的,只是引數不通而已
看過海賊王的人都知道山治和路飛,山治是乙個廚師,手藝那是槓槓的.路飛則是乙個大胃王,超能吃.現在編寫乙個程式,讓山治不斷給路飛做食物,而路飛不斷吃,吃完之後要對山治說感謝.ok,開始編碼
public class food ;
private static random random = new random();
public static string getrandomfood()
}
public class shanzhirunnable implements runnable
@override
public void run() catch (interruptedexception e) }}
}
public class lufeirunnable implements runnable
@override
public void run() catch (interruptedexception e) }}
}
public class testmain
}
執行結果如下,並擷取部分輸出
==>山治開始做 一品鮑魚
==>山治把 一品鮑魚 給做好了,給路飛送過去
==>山治收到路飛的評語:開吃啦...
==>山治開始做 芝麻肉絲
--->路飛拿到山治做的菜: 一品鮑魚
==>山治把 芝麻肉絲 給做好了,給路飛送過去
--->路飛吃完一品鮑魚
--->路飛拿到山治做的菜: 芝麻肉絲
==>山治收到路飛的評語:一品鮑魚太好吃!太感謝山治了...
==>山治開始做 雞蛋炒西紅柿
--->路飛吃完芝麻肉絲
==>山治把 雞蛋炒西紅柿 給做好了,給路飛送過去
==>山治收到路飛的評語:芝麻肉絲太好吃!太感謝山治了...
--->路飛拿到山治做的菜: 雞蛋炒西紅柿
==>山治開始做 油豆腐鑲肉
==>山治把 油豆腐鑲肉 給做好了,給路飛送過去
--->路飛吃完雞蛋炒西紅柿
--->路飛拿到山治做的菜: 油豆腐鑲肉
==>山治收到路飛的評語:雞蛋炒西紅柿太好吃!太感謝山治了...
==>山治開始做 梅菜蒸魚尾
==>山治把 梅菜蒸魚尾 給做好了,給路飛送過去
--->路飛吃完油豆腐鑲肉
==>山治收到路飛的評語:油豆腐鑲肉太好吃!太感謝山治了...
==>山治開始做 炸子雞
--->路飛拿到山治做的菜: 梅菜蒸魚尾
==>山治把 炸子雞 給做好了,給路飛送過去
--->路飛吃完梅菜蒸魚尾
--->路飛拿到山治做的菜: 炸子雞
==>山治收到路飛的評語:梅菜蒸魚尾太好吃!太感謝山治了...
==>山治開始做 翠竹粉蒸魚
==>山治把 翠竹粉蒸魚 給做好了,給路飛送過去
--->路飛吃完炸子雞
--->路飛拿到山治做的菜: 翠竹粉蒸魚
==>山治收到路飛的評語:炸子雞太好吃!太感謝山治了...
==>山治開始做 風情羊柳
==>山治把 風情羊柳 給做好了,給路飛送過去
現在假設他們倆都沒有耐心,不想一直等一下
public class lufeirunnable implements runnable
@override
public void run() catch (interruptedexception e) catch (timeoutexception e) }}
}
public class shanzhirunnable implements runnable
@override
public void run() catch (interruptedexception e) catch (timeoutexception e) }}
}
執行一下程式:
==>山治開始做 辣子肉丁
--->路飛等的不耐煩了,不想等......開始喝起 東北風
==>山治把 辣子肉丁 給做好了,給路飛送過去
==>山治收到路飛的評語:開吃啦...
==>山治開始做 砂鍋三味
--->路飛吃完辣子肉丁
==>山治把 砂鍋三味 給做好了,給路飛送過去
==>山治收到路飛的評語:辣子肉丁太好吃!太感謝山治了...
--->路飛吃完砂鍋三味
==>山治開始做 甜椒肉絲
==>山治把 甜椒肉絲 給做好了,給路飛送過去
--->路飛吃完甜椒肉絲
==>山治收到路飛的評語:砂鍋三味太好吃!太感謝山治了...
==>山治開始做 一品鮑魚
==>山治把 一品鮑魚 給做好了,給路飛送過去
==>山治等的不耐煩了,不想等......,把 一品鮑魚 其他船員吃了
==>山治開始做 香酥鳳腿
--->路飛等的不耐煩了,不想等......開始喝起 東北風
==>山治把 香酥鳳腿 給做好了,給路飛送過去
==>山治收到路飛的評語:甜椒肉絲太好吃!太感謝山治了...
--->路飛吃完香酥鳳腿
==>山治開始做 雪花片湯
==>山治把 雪花片湯 給做好了,給路飛送過去
--->路飛吃完雪花片湯
==>山治收到路飛的評語:香酥鳳腿太好吃!太感謝山治了...
==>山治開始做 鳳尾金魚
==>山治把 鳳尾金魚 給做好了,給路飛送過去
==>山治收到路飛的評語:雪花片湯太好吃!太感謝山治了...
--->路飛吃完鳳尾金魚
==>山治開始做 三菇浸魚雲
--->路飛等的不耐煩了,不想等......開始喝起 東北風
==>山治把 三菇浸魚雲 給做好了,給路飛送過去
==>山治收到路飛的評語:鳳尾金魚太好吃!太感謝山治了...
--->路飛吃完三菇浸魚雲
==>山治開始做 辣子雞丁
==>山治把 辣子雞丁 給做好了,給路飛送過去
==>山治收到路飛的評語:三菇浸魚雲太好吃!太感謝山治了...
--->路飛吃完辣子雞丁
==>山治開始做 梅乾菜燒肉
通過以上兩個例子,掌握exchanger
應該沒有什麼難度.好的,這篇就到這裡.
JAVA多執行緒之 執行緒池
執行緒池顧名思義,就是乙個放置執行緒的池子。就跟資料庫連線池差不多。執行緒池通過對併發執行緒的控制,能有效的節省系統資源的浪費,提高系統的效能。學習執行緒池,先了解一下執行緒池的乙個基本結構 executor是乙個介面,其中只有乙個方法,就是execute方法。所以executor實際就是乙個執行緒...
Java多執行緒之執行緒安全
當多個執行緒訪問某乙個類 物件或方法時 這個類始終都能表現出正確的行為,那麼這個類 物件或方法 就是執行緒安全的。public class mythread extends thread public static void main string args 結果如下 t1正在執行 4 t1正在執行...
java 多執行緒 之 Excutor
excutor介面 提供了一種將任務提交和任務執行機制相分離的方法 excutorservice介面 提供了excutor的管理介面,以及可為跟蹤乙個或多個非同步任務狀態而生成future的方法 scheduledexcutorservice介面 提供了可以安排在給定的延遲後執行或定時執行的命令 方...