同步synchronized
1.同步的概念就是共享资源,如果不是为了共享资源没必要进行同步;同步的目的就是为了线程安全,线程安全只需要满足特性:原子性(同步)、可见性
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() {@Overridepublic void run() {t.method1();}}, "t1");Thread b = new Thread(new Runnable() {@Overridepublic void run() {t.metho2();}}, "t2");a.start();b.start();}}线程:t1(延迟2秒)synchronized void metho2( 线程:t2