synchronized有什么作用?
synchronized是java中的一个关键字,可以用来修饰静态方法、非静态方法、代码块上,被synchronized所修饰的静态方法、非静态方法、代码块里的代码(我们暂称之为“临界区代码”)同一时间只能有一个线程来执行。多个线程经过“临界区代码”时,必须一个一个来。
synchronized锁的范围
那么问题就随之而来了,既然是经过“临界区代码”的多个线程之间要发生互斥,那这个互斥的范围不好确定啊,总不能以“代码”作为互斥范围吧。那用什么来作为互斥范围呢?