Am I right in thinking, that if the method only does one line like the above, then there is no point in it being synchronized.

不,你似乎相信同步只意味着原子性.

但它确实提供了更多 – 特别是,它保证:

>原子性,对一行分配无用(下面的边框除外)

>能见度

>防止重新排序

>互斥:在同一台监视器上同步的2个方法不能同时运行

在您的示例中,如果没有synchronized,则无法保证如果某个线程调用您的方法而另一个线程随后读取余额,则该第二个线程将看到更新的值.

请注意,必须在两端确保可见性:写入和读取需要与同一监视器同步.所以getter getBalance也需要syhcnronized.

边框情况:double and long assignements are not guaranteed to be atomic.所以即使在如下所示的单行示例中,如果没有synchronized关键字,一个线程可能会更新double的前32位而另一个线程会更新最后32位,从而创建一个新的混合余额变量.

public synchronized void setValue(double value) {

balance = value;

}

java方法synchronized_java synchronized方法 – 它是如何工作的相关推荐

  1. ava锁机制Synchronized方法简介

    http://blog.csdn.net/happyangelling/article/details/6407515 打个比方:一个object就像一个大房子,大门永远打开.房子里有很多房间(也就是 ...

  2. java多线程同步synchronized——对象监视器

    1.synchronized关键字的作用域有二种: 1)是某个对象实例内,synchronized aMethod(){}可以防止多个线程同时访问这个对象的synchronized方法(如果一个对象有 ...

  3. maven引用servlet_解决Maven 项目报错 java.httpservlet和synchronized使用方法

    使用java8 的lanmbe表达式时,使用java1.8编译,则会报错 需要在pom.xml的中添加 org.apache.maven.plugins maven-compiler-plugin 2 ...

  4. java一个类可以同时被访问吗,Java中两个线程是否可以同时访问同一个对象的两个不同的synchronized方法?...

    public classSyncMethod {public synchronized voidsyncMethod2() {try{ System.out.println("@@@@@@@ ...

  5. java.util.Collections.synchronizedSet()方法的使用

    下面的例子显示java.util.Collections.synchronizedSet()方法的使用 package com.;import java.util.*;public class Col ...

  6. java中的Native方法

    由于Native方法最近经常碰到,好奇之下便找到了这篇博客,内容还是相当好理解的,下面即是正文部分: 一. 什么是Native Method 简单地讲,一个Native Method就是一个java调 ...

  7. java中构造方法和方法全面解析

    java中构造方法和方法全面解析 我相信大多说人都对构造方法.方法不陌生,而且很了解,但我也相信有很多像我这样的没有一个很好很清晰很全面的认识,今天就把它整理如下,希望能给大家带来点方便与帮助,也希望 ...

  8. JAVA多线程中wait()方法的详细分析

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/119645679 本文出自[赵彦军的博客] 文章目录 wait 和 notify 简 ...

  9. java invalidate_Java Component.invalidate方法代码示例

    import java.awt.Component; //导入方法依赖的package包/类 /** Installs the component we will embed to display t ...

最新文章

  1. python基础04
  2. python 中类属性共享问题
  3. ubuntu16.04设置静态IP
  4. 译 | 将数据从Cosmos DB迁移到本地JSON文件
  5. 26. 删除排序数组中的重复项
  6. java poi读取word中附件_Java POI导入word, 带图片
  7. 【转载保存】hadoop三个配置文件的参数含义说明core-site.xml、hdfs-site.xml、...
  8. 前端开发 背景图 0229
  9. OC学习笔记四 数据类型
  10. 3D控件Aspose.3D 12月新版V17.12发布 | 添加支持导出RVM
  11. Abaqus简单部件受力分析
  12. Java黑皮书课后题第6章:*6.7(金融应用:计算未来投资回报率)编写一个方法,计算按照给定的年数和利率计算未来投资回报值,未来投资回报值是用编程练习题2.21中的公式得到的,使用下面方法头
  13. 三星 android recovery,三星所有机型如何进入recovery模式的方法
  14. 分享一些图片懒加载组件的设计思路
  15. 相信就能创造无限可能,捂碳星球荣获海南青创大赛一等奖
  16. 电脑配置单3(自用勿删)
  17. python中写sql语句添加for循环和变量。(一种SQL引入循环的思想实现)
  18. 您对超人搜索有什么建议?
  19. Part 2 Linux programming:chapter 18:多线程服务器端实现
  20. 地理分布团队的敏捷生命周期

热门文章

  1. node.js之第一天
  2. SpringBoot与JdbcTemplate的完美结合
  3. Oracle 11g数据库详细安装步骤图解
  4. excel的常用公式
  5. 【C/C++】inline函数和static函数和宏定义的比较
  6. [RMAN]表空间的恢复
  7. flutter 发布release版的流程(android)
  8. matlab 调用c++编译好的文件出现问题
  9. 网络钓鱼和欺诈相关专题
  10. day17--JQuery