synchronized 讲解

synchronized 讲解

  • 同步方法的语法格式 :
[修饰符] synchronized 返回值类型 方法名 ([形参列表],......) throws 异常列表{

}

synchronized 【修饰符】 返回值类型 方法名(【形参列表】)hrows 异常列表{

}
  • 同步代码块的语法格式:
synchronized (obj) 

  {//同步代码块 }

}
  • 同步代码块

    1.为了解决并发操作可能造成的异常,java的多线程支持引入了同步监视器来解决这个问题,使用同步监视器的通用方法就是同步代码块,其语法如下:

    synchronized(obj){

    //同步代码块

    }

    其中obj就是同步监视器,它的含义是:线程开始执行同步代码块之前,必须先获得对同步代码块的锁定。任何时刻只能有一个线程可以获得对同步监视器的锁定,当同步代码块执行完成后,该线程会释放对该同步监视器的锁定。虽然java程序允许使用任何对象作为同步监视器,但是同步监视器的目的就是为了阻止两个线程对同一个共享资源进行并发访问,因此通常推荐使用可能被并发访问的共享资源充当同步监视器。

  • 同步方法
    1.同步方法就是使用synchronized关键字修饰某个方法,这个方法就是同步方法,这个同步方法(非static方法)无须显示指定同步监视器,同步方法的同步监视器就是this,也就是调用该方法的对象。通过同步方法可以非常方便的实现线程安全的类,线程安全的类有如下特征:

    该类的对象可以方便被多个线程安全的访问;

    每个线程调用该对象的任意方法之后都得到正确的结果;

    每个线程调用该对象的任意方法之后;该对象状态依然能保持合理状态。

法之后都得到正确的结果;

每个线程调用该对象的任意方法之后;该对象状态依然能保持合理状态。

2.不可变类总是线程安全的,因为它的对象状态不可改变可变类需要额外的方法来保证其线程安全,在Account类中我们只需要balance的方法变成同步方法即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
synchronized关键字是Java中用于实现线程同步的关键字。它可以用来修饰方法或代码块,以确保在多线程环境下的安全性。 synchronized关键字的使用有以下几点需要注意: 1. synchronized是一种重量级的操作,会影响性能。因此,在使用synchronized时应尽可能减小同步块的范围,避免锁的竞争。 2. synchronized锁的范围应尽量小,只保护必要的代码块,避免对整个方法或对象进行锁定。这样可以提高程序的并发性能。 3. synchronized锁定的对象不应该被修改,否则可能会导致死锁的发生。因此,在使用synchronized时需要谨慎处理锁定的对象。 4. 在使用synchronized时,需要考虑线程间的协调和通信,以避免死锁和活锁的发生。这可以通过合理设计程序逻辑和使用其他同步机制来实现。 总的来说,synchronized关键字是一种常用的线程同步机制,可以确保在多线程环境下的数据安全性和一致性。但是在使用时需要注意性能问题和锁的范围,以及避免死锁和活锁的发生。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Synchronized 关键字详解](https://blog.csdn.net/swadian2008/article/details/99328700)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [举例讲解Javasynchronized关键字的用法](https://download.csdn.net/download/weixin_38724611/12798175)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值