1.同步的概念就是共享資源,若是不是爲了共享資源不必進行同步;同步的目的就是爲了線程安全,線程安全只須要知足特性:原子性(同步)、可見性java
package demo1;/** * Created by liudan on 2017/5/30. */public class MyThread3 { private synchronized void method1() { try { System.err.println("線程:" + Thread.currentThread().getName()); Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } } private synchronized void metho2() { System.err.println("線程:" + Thread.currentThread().getName()); } public static void main(String[] agrs) { /** * 描述:1. a線程先獲取t對象的鎖,b線程能夠異步訪問t對象中 metho2() 無 synchronized 修飾的方法 * 2. a線程先獲取t對象的鎖,b線程爭取去獲取t對象的鎖,這個時候對象使用都了同步 synchronized 修飾方法,a線程 sleep 休眠5秒、metho2()鎖還沒釋放;5秒事後,鎖被釋放掉; * b這個時候才真正的拿到t對象的鎖,去訪問 metho2 方法。 */ MyThread3 t = new MyThread3(); Thread a = new Thread(new Runnable() { @Override public void run() { t.method1(); } }, "t1"); Thread b = new Thread(new Runnable() { @Override public void run() { t.metho2(); } }, "t2"); a.start(); b.start(); }}線程:t1(延遲2秒)synchronized void metho2( 線程:t2