追加コンテンツ:
スレッド間の同期と通信
問題: 共有データにアクセスするときにスレッドが相互に干渉する可能性があります。
解決策:
同期されたメソッド
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 中国語 Web サイトの他の関連記事を参照してください。