高并发day01

synchronized 关键字。
高并发day01

锁定的是一个对象不是 锁的代码块 就是一个对象,对象可以自己去指定。
拥抱↑static修饰的 锁定的是 类的class 不是this。
高并发day01
只有synchronized才需要申请这把锁 别人不需要申请的所以 一个调用锁了之后的线程另外一个还是可以运行的。
高并发day01

不需要申请这把锁 就是一个进厕所了 另外一个在厕所打扫卫生。互不干涉。管你锁定不锁定都没事继续运行。

高并发day01
高并发day01

银行问 读线程需要加锁吗? 写需要加锁码?

会产生脏读。 有时候允许脏读 有的不允许脏读。 就是读取的过程中 没有读到 之前修改的数据;。

高并发day01
线程同步运行就是不行的 。
子类的synchronize 方法可以调用父类的synchronize方法面试题目

高并发day01

线程抛出异常所锁就会被释放

高并发day01

高并发day01

写完之后进行数据修改通知 告诉其他人 缓冲区的信息修改了。 保证线程之间的可见性。高并发很多用的是volitile的时候不要加锁。 就是无锁同步 保证有锁的时候线程可见性。 没有保证原子性。而synchronize 保证了可见性与原子性。
A读取100 然后加1 同时b 也读取修改为101 然后放回101 第二个放回时只是进行了覆盖 并没有进行修改。

高并发day01
synchronize 效率低好多比 volitile

高并发day01
这一个是不行的。
高并发day01

门闩等待:
高并发day01
高并发day01