同步的好处:
解决了多线程的安全问题。
同步的弊端:
加了一个同步代码块后,就相当于加了一把锁,每次进入同步代码块的时候都会去判断一下
无形之中,降低了我们执行效率。
1、同步代码块上的锁对象是什么呢? 任意对象,但是需要注意的是,多个线程之间的锁对象要一样。 2、同步方法呢? 将synchronized关键字放在方法的定义上 同步方法的锁对象是this 3、静态的同步方法的锁对象是谁呢? class文件对象,是线程类的字节码文件对象,其他的字节码文件对象不行
解决同步安全问题的第二种解法:加Lock锁 在此之前我们解决线程同步安全问题的时候,都是使用synchronized关键字 ,将需要被包裹的代码给包起来,但是,我们并没有实际看到在哪里上了锁, 又或是在哪里释放了锁,让其他线程获取到锁对象,执行线程。m Lock(接口) 具体的子类:Class ReentrantLock lock() 加锁 unlock() 释放锁