利用synchronized关键字了解死锁
博主个人网站:https://blog.zhenglin.work
- synchronized是java关键字从字面上理解是同步的意思,它的作用是限制多线程的,使多线程暂时变成一个线程,确保线程的安全;synchronized代码块(包括方法、某个对象)只能一个线程调用;待这个线程调用完成后,其他线程才能调用此代码块; 就像生活中 ,第一个线程执行遇到synchronized,它把门锁上了,等它执行完了代码;再打开门,让其它线程可以进入代码块中。
- 我们可以利用synchronized这种机制,编写一个死锁;死锁的目的在于我们了解死锁的形成和如何解决。
- 来个最简单死锁;线程甲 锁住对象a, 然后准备再锁住b,完成后释放a; 线程乙先锁住对象b,再锁a,最后释放b; 这种场景就会进入一个僵局,死锁出现了。
package com.zhengling.work;
public class DeadLock {
public static void main(String[] args) {
String o1 = "a";
String o2 = "b";
Processor1 p1 = new Processor1(o1,o2);
Processor2 p2