线程安全
多个线程同时共享同一个全局变量或静态变量,对其做写的操作,可能汇聚i发生数据冲突。读操作是不会的。
所以可以使用synchornized解决同步问题,即我们所说的线程通信,但是效率是低的。
同步函数若使用synchornized是使用this锁。原理其实就是把方法或函数前加synchornized,多线程引用时候需要抢到“锁”,才有权对其进行读写操作。这个锁可以是一个object类型。
使用syn、lock都是属于单个jvm中同步。
分布式锁和高并发与jvm是没有关系。
多线程死锁
同步函数中签到同步函数,导致死锁状态,原理:锁 无法释放,互相抢有对方的锁
在多线程中需要注意原子性,可见性。
原子性解释为:一个操作进行到底
可见性解释为:在线程池中,一个线程改变了一个全局变量的值,另一条线程应立即更新信息
使用AtomicZnteger可以保证原子性又保证可见性