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中文網其他相關文章!