附加內容:
執行緒間的同步與通訊
問題: 執行緒在存取共享資料時可能會互相干擾。
解:
同步方法
synchronized void synchronizedMethod() { // Código sincronizado }
同步區塊:
synchronized (this) { // Código sincronizado }
溝通範例:
執行緒之間使用wait()、notify()和notifyAll()進行通訊:
class SharedResource { private boolean flag = false; synchronized void produce() { while (flag) { try { wait(); } catch (InterruptedException e) { e.printStackTrace(); } } System.out.println("Producing..."); flag = true; notify(); } synchronized void consume() { while (!flag) { try { wait(); } catch (InterruptedException e) { e.printStackTrace(); } } System.out.println("Consuming..."); flag = false; notify(); } } public class ThreadCommunication { public static void main(String[] args) { SharedResource resource = new SharedResource(); Thread producer = new Thread(resource::produce); Thread consumer = new Thread(resource::consume); producer.start(); consumer.start(); } }
結論
以上是線程間的同步與通信的詳細內容。更多資訊請關注PHP中文網其他相關文章!