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