1. 程式人生 > >多線程(線程安全問題)學習筆記

多線程(線程安全問題)學習筆記

售票 try object stat exce get sync 使用 except

多線程並發操作同一數據時, 就有可能出現線程安全問題 * 使用同步技術可以解決這種問題, 把操作數據的代碼進行同步, 不要多個線程一起操作 public class Demo2_Synchronized { /** * @param args * 需求:鐵路售票,一共100張,通過四個窗口賣完. */ public static void main(String[] args) { TicketsSeller t1 = new TicketsSeller(); TicketsSeller t2 = new TicketsSeller(); TicketsSeller t3 = new TicketsSeller(); TicketsSeller t4 = new TicketsSeller(); t1.setName("窗口1"); t2.setName("窗口2"); t3.setName("窗口3"); t4.setName("窗口4"); t1.start(); t2.start(); t3.start(); t4.start(); } } class TicketsSeller extends Thread { private static int tickets = 100; static Object obj = new Object(); public TicketsSeller() { super(); } public TicketsSeller(String name) { super(name); } public void run() { while(true) { synchronized(obj) { if(tickets <= 0) break; try { Thread.sleep(10);//線程1睡,線程2睡,線程3睡,線程4睡 } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(getName() + "...這是第" + tickets-- + "號票"); } } } }

多線程(線程安全問題)學習筆記