什么是线程安全问题?
答:当多个线程共享同一个全局变量,做写的时候,可能会受到其他线程的干扰,导致数据有问题,这种现象称为线程安全问题。
线程如何实现同步?
多个线程共享同一个全局变量,数据安全问题 - - - - 保证数据的原子性。
解决办法:
synchronized --自动同步
lock -----jdk1.5并发包 - - - 手动同步
在什么地方需要考虑加锁?
在真正产生共享同一变量的时候。
一个线程使用同步函数,另一个线程是同步代码块this能够使用同步吗?
答:可以。
一个线程使用同步函数,另一个线程同步代码块(非this)不能够同步。
在方法上面加上synchronized同步函数
非静态同步函数
同步函数使用this锁
静态(static关键字)同步函数使用的不是this锁,使用的是.class锁
两个线程,一个线程使用同步函数,另一个线程使用静态同步函数可以实现同步吗?
答:不能,同步函数使用this锁,静态同步函数使用当前字节码文件(.class)
加锁 保证同步,同步是保证数据安全问题,即数据的原子问题。
分布式锁、高并发锁和jvm是没有任何关系的
使用synchronized、lock都属于单个jvm中同步。
死锁的产生:同步中嵌套同步,并且互相不释放资源。