同步代碼塊java
對象如同鎖。持有鎖的線程能夠在同步中執行。安全
沒有持有鎖的線程即便獲取cpu的執行權。也進不去。由於沒有獲取鎖。多線程
火車上的衛生間 --經典ide
同步的前提:線程
1.必需要有2個或者2個以上的線程。對象
2.必須是多個線程使用同一個鎖。資源
必須保證同步中只能有一個線程在運行。get
好處:解決了多線程的安全問題。同步
弊端:多個線程須要判斷鎖。較爲消耗資源。it
/* 同步代碼塊 對象如同鎖。持有鎖的線程能夠在同步中執行。 沒有持有鎖的線程即便獲取cpu的執行權。也進不去。由於沒有獲取鎖。 火車上的衛生間 --經典 同步的前提: 1.必需要有2個或者2個以上的線程。 2.必須是多個線程使用同一個鎖。 必須保證同步中只能有一個線程在運行。 好處:解決了多線程的安全問題。 弊端:多個線程須要判斷鎖。較爲消耗資源。 */ class Ticketest implements Runnable { private int tick = 100; Object obj = new Object(); public void run() { while(true) { synchronized(obj) { if(tick>0) { try { Thread.sleep(10); } catch (Exception e) { } System.out.println(Thread.currentThread().getName()+"....tick="+tick--); } } } } } class Test_11_09 { public static void main(String[] args) { System.out.println("Hello Wolrd"); } }