线程的同步
线程同步的作用:
实现线程间的有机交互、并确保共享资源在某些关键时段只能被一个线程访问。
避免线程的安全隐患。
互斥锁:
每个对象都对应于一个可称为“互斥锁”的标记,这个标记用来保证在任一时刻,只能有一个线程访问该对象。
Java对象默认是可以被多个线程共用的,只是在需要时才启动“互斥锁”机制,成为专用对象。
关键字synchronized用来与对象的互斥锁联系
当某个对象用synchronized修饰时,表明该对象已启动“互斥锁”机制,在任一时刻只能由一个线程访问,即使该线程出现堵塞,该对象的被锁定状态也不会解除,其他线程任不能访问该对象。
线程同步的优缺:
同步好处:决了线程安全问题
同步弊端:降低了运行效率(判断锁是较为消耗资源的)
同步嵌套,容易出现死锁
同步的两种表现形式:
1.同步代码块
synchronized(对象){
需要同步的代码
}
2.同步函数:使用的锁是this
public synchronized void show(){
}