第06部分:synchronized语句

Java 一直支持多线程编程,后文会详细介绍这个话题。不过要注意,并发编程不容易,有很多难以捉摸的地方。


具体而言,处理多线程时,经常必须避免多个线程同时修改同一个对象,以防对象的状态有冲突。Java 提供的 synchronized 语句可以帮助程序员,避免发生冲突。synchronized 语句的句法为:

synchronized ( expression ) {

        statements

}

expression 表达式的计算结果必须是一个对象或数组。statements 是能导致破坏的代码块,必须放在花括号里。


执行语句块之前,Java 解释器先为 expression 计算得到的对象或数组获取一个排它锁(exclusive lock),直到语句块执行完毕后再释放。只要某个线程拥有对象的排它锁,其他线程就不能再获取这个锁。



在 Java 中,synchronized 关键字还可以作为方法的修饰符。应用于方法时,synchronized关键字指明整个方法都被锁定。如果 synchronized 关键字应用于类方法(静态方法),执行方法前,Java 会先为这个类获取一个排它锁。如果 synchronized 关键字应用于实例方法,Java 为类的实例获取一个排它锁。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • while语句 while 语句是一种基本语句,目的是让 Java 执行重复的操作。换言之,while 语句是 J...
    郭艺宾阅读 205评论 0 0
  • break语句 break 语句让 Java 解释器立即跳出所在的语句块。我们已经见过 break 语句在 swi...
    郭艺宾阅读 292评论 0 0
  • 表达式语句 前面已经说过,某些 Java 表达式有副作用。也就是说,这些表达式不仅能计算得到的一个值,还能以某种方...
    郭艺宾阅读 366评论 0 0
  • 语句是 Java 语言中可执行代码的基本单位,表达程序员的某个意图。和表达式不同,Java语句没有返回值。语句一般...
    郭艺宾阅读 189评论 0 0
  • if/else语句 if 语句是基本的控制语句,允许 Java 作出判断,或者更准确地说,根据条件决定执行哪些语句...
    郭艺宾阅读 180评论 0 0