- 同步代码块
//同步锁表示需要共享的对象
synchronized (同步锁){
//同步代码块
}
- 同步方法
使用synchronized修饰的方法,保证A线程执行该方法的时候,其他线程只能在外面等着。
对于非static方法,同步锁就是this.对于static方法,我们使用当前方法所在类的字节码对象( Object.class)
synchronized public void dowork(){
//TO DO
}
synchronized的好与坏好处:保证了多线程并发访问的同步操作,避免线程的安全性问题。
坏处:性能降低。
建议:降低synchronized的作用域
- lock
//创建一个锁对象
private final Lock lock=new ReentrantLock();
//获取锁
lock.lock();
//释放锁
lock.unlock();