1.等待/通知機(jī)制
wait()和notify()?
wait()和sleep()的不同是wait()是會(huì)失去鎖再层,但是sleep()并不會(huì)
notify()執(zhí)行后鎖也不會(huì)釋放
2.生產(chǎn)者/消費(fèi)者模式的實(shí)現(xiàn)
?生產(chǎn)者和消費(fèi)者模式的實(shí)現(xiàn)和等待/通知機(jī)制是一樣的使用:wait()和notify()
3.方法join的使用
線程join的作用是使所屬的線程對(duì)對(duì)象X正常執(zhí)行run()方法中的任務(wù)聂受,從而使當(dāng)前線程進(jìn)行無(wú)限期阻塞烤镐,等待x執(zhí)行完之后再執(zhí)行Z后面的代碼
join(num)中的參數(shù)num使用用來(lái)設(shè)定等待時(shí)間的炮叶。
4.ThreadLocal的使用
變量值一般共享就是采用public static方式碗旅,但是所有的線程都使用同一個(gè)public staitc變量。
Theadlocal s = new Theadlocal();
s.get() s.set()
InheritableThreadLocal可以在子線程中取得父線程的值镜悉。
5.通過(guò)管道進(jìn)行線程間通信:字節(jié)流?
管道流和字節(jié)流
pipeStream是一種特殊的流祟辟,用于在不同線程之間直接傳送數(shù)據(jù)。一個(gè)線程把數(shù)據(jù)輸出到管道侣肄,另一個(gè)從輸入管道中讀數(shù)據(jù)旧困。通過(guò)使用管道,實(shí)現(xiàn)不同線程之間的通信稼锅。