今天写java的时候,在一个类中写入了2个synchronized 方法。而方法1调用方法2,执行的时候老是卡住,无法往下走。
经过查阅资料,发现 synchronized方法执行的时候,synchronized方法影响的范围并不是单单方法本身,而是这个类中所有带有synchronized 的方法,synchronized线程都会等待其执行完成。这样子a调用了b,而b又要等待a执行完成才能执行,造成了死锁。
遇此问题,特地记录。
今天写java的时候,在一个类中写入了2个synchronized 方法。而方法1调用方法2,执行的时候老是卡住,无法往下走。
经过查阅资料,发现 synchronized方法执行的时候,synchronized方法影响的范围并不是单单方法本身,而是这个类中所有带有synchronized 的方法,synchronized线程都会等待其执行完成。这样子a调用了b,而b又要等待a执行完成才能执行,造成了死锁。
遇此问题,特地记录。