1. スレッド間で正しい可視性を維持するには、synchronized または volatile を使用する必要があります。
2. 読み取りは、別のスレッドが最終的に書き込む変数である可能性があります。
3. 別のスレッドによって読み取られる可能性のある変数を書き込みます。
例
class SellTicket implements Runnable { private int tickets = 10; public void run() { while (true) { if (tickets > 0) sell(); else return; } } public synchronized void sell() { if (tickets > 0) { System.out.println(Thread.currentThread().getName() + "卖出第" + tickets + "张票"); tickets--; try { Thread.sleep(500); } catch (InterruptedException e) { e.printStackTrace(); } } } } public class TicketTest { public static void main(String args[]) { SellTicket t = new SellTicket(); new Thread(t, "窗口1").start(); new Thread(t, "窗口2").start(); new Thread(t, "窗口3").start(); System.out.println("主线程结束"); } }
以上がJava同期を使用するための条件は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。