我对synchronized关键字的用法和重要性有一些疑问。

synchronized关键字的意义是什么?

方法应何时synchronized ?

从程序上和逻辑上是什么意思?

#1楼

据我了解,同步基本上意味着编译器在您的方法周围编写了monitor.enter和monitor.exit。 因此,根据使用方式的不同,它可能是线程安全的(我的意思是,您可以使用同步方法编写对象,而同步方法根据类的用途不是线程安全的)。

#2楼

synchronized关键字是关于不同线程读写相同变量,对象和资源的全部内容。 这不是Java中的琐碎话题,但以下是Sun的引文:

synchronized方法提供了一种防止线程干扰和内存一致性错误的简单策略:如果一个对象对多个线程可见,则对该对象变量的所有读取或写入都将通过同步方法完成。

简而言之:当您有两个线程正在读取和写入同一个“资源”时,说一个名为foo的变量,您需要确保这些线程以原子方式访问该变量。 如果没有synchronized关键字,线程1可能看不到对foo进行的更改线程2,或者更糟的是,它可能只更改了一半。 这在逻辑上不会是您所期望的。

同样,这是Java中不平凡的主题。 要了解更多信息,请在SO和Internet上探索有关以下主题:

继续探索这些主题,直到名称“ Brian Goetz”与大脑中的“并发”一词永久关联。

#3楼

synchronized关键字使线程在进入方法时获得锁,因此只有一个线程可以同时执行该方法(对于给定的对象实例,除非它是静态方法)。

这通常被称为使类具有线程安全性,但是我会说这是委婉的说法。 虽然同步确实可以保护Vector的内部状态免于损坏,但这通常对Vector的用户没有多大帮助。

考虑一下:

if (vector.isEmpty()){

vector.add(data);

}

即使所涉及的方法是同步的,由于它们是分别锁定和解锁的,所以两个不幸的是,定时线程可以创建带有两个元素的向量。

因此,实际上,您还必须同步您的应用程序代码。

因为方法级同步a)不需要时昂贵,并且b)需要同步时不够,所以现在存在非同步的替换(对于Vector,则为ArrayList)。

最近,并发程序包已发布,其中包含许多巧妙的实用程序,可解决多线程问题。

#4楼

可以将其视为一种旋转门,就像您在足球场上可能会发现的那样。 有很多人想进入,但是在旋转门上他们是“同步的”。 一次只能一个人通过。 所有想要通过的人都会做,但是他们可能必须等到可以通过。

#5楼

同步简单意味着没有两个线程可以同时访问该块/方法。 当我们说一个类的任何块/方法都已同步时,这意味着一次只能有一个线程可以访问它们。 在内部尝试访问它的线程首先对该对象进行锁定,只要该锁定不可用,其他线程就无法访问该类实例的任何同步方法/块。

请注意,另一个线程可以访问未定义为同步的同一对象的方法。 线程可以通过调用来释放锁

Object.wait()

java同步的意思_“同步”是什么意思?相关推荐

  1. java同步异步区别_同步请求和异步请求的区别

    同步请求和异步请求的区别 先解释一下同步和异步的概念 同步是指:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式. 异步是指:发送方发出数据后,不等接收方发回响应,接着发送下个数据包的 ...

  2. 线程同步 线程安全_同步装饰器来替换线程安全类

    线程同步 线程安全 您知道什么是线程安全吗? 如果没有,下面是一个简单的示例. 所有类都必须是线程安全的,对吗? 并不是的. 其中一些必须是线程安全的? 又错了. 我认为它们都不必是线程安全的,而它们 ...

  3. python播放音乐同步歌词范晓萱_同步_范晓萱_高音质在线试听_同步歌词|歌曲下载_酷狗音乐...

    范晓萱 - 同步 专辑: 同步 歌手: 范晓萱 [id:$010126C0] [ar:范晓萱] [ti:同步] [by:] [hash:d71f1a9610608a9caf43609ffd37686 ...

  4. java同步异步调用_详解java 三种调用机制(同步、回调、异步)

    1:同步调用:一种阻塞式调用,调用方要等待对方执行完毕才返回,jsPwwCe它是一种单向调用 2:回调:一种双向调用模式,也就是说,被调用方在接口被调用时也会调用对方的接口: 3:异步调用:一种类似消 ...

  5. 关于java线程同步的笔记_线程同步(JAVA笔记-线程基础篇)

    在多线程应用程序中经常会遇到线程同步的问题.比如:两个线程A.线程B可能会 "同时" 执行同一段代码,或修改同一个变量.而很多时候我们是不希望这样的. 这时候,就需要用到线程同步. ...

  6. scala和java像不像_关于Java和Scala同步的五件事你不知道

    scala和java像不像 实际上,所有服务器应用程序都需要在多个线程之间进行某种同步. 大多数同步工作是在框架级别为我们完成的,例如通过我们的Web服务器,数据库客户端或消息传递框架. Java和S ...

  7. java runnable线程锁_多线程 java 同步 、锁 、 synchronized 、 Thread 、 Runnable

    线程 1 线程概述 1.1 什么是线程 v  线程是程序执行的一条路径, 一个进程中可以包含多条线程 v  一个应用程序可以理解成就是一个进程 v  多线程并发执行可以提高程序的效率, 可以同时完成多 ...

  8. java 同步解决不安全类_「JAVA」Java 线程不安全分析,同步锁和Lock机制,哪个解决方案更好...

    线程不安全 线程不安全的问题分析:在小朋友抢气球的案例中模拟网络延迟来将问题暴露出来:示例代码如下: public class ImplementsDemo { public static void ...

  9. java 同步与异步区别_同步和异步有何异同,在什么情况下分别使用它们?

    2015-05-12 06:30:01 阅读( 4 ) 通俗版:举个例子:普通B/S模式(同步)AJAX技术(异步) 同步:提交请求->等待服务器处理->处理完毕返回 这个期间客户端浏览器 ...

最新文章

  1. 错误名称:EntityCommandExecutionException
  2. iOS和OS X中的bundle
  3. 常用单词缩写(不断更新)
  4. 重载、重写(覆盖)、隐藏(重定义)
  5. python发送邮件拒绝_人生苦短之Python发邮件
  6. 教会你Linux Shell自动交互的三种方法
  7. 2020牛客国庆集训派对day2 VIRUS OUTBREAK
  8. bat 发送post请求_get post 请求
  9. element ui 表格拆分表格_python拆分表格数据
  10. vue添加定位功能_vue 实现Web端的定位功能 获取经纬度
  11. 一篇文章让小白了解什么是软件测试
  12. UVA - 11729 Commando War
  13. 兜兜转转还是往前了一小步
  14. 看见更有远见的技术管理
  15. HDU4565 So Easy! (矩阵)
  16. 植物大战僵尸修改游戏存档
  17. 公考二十四节气考点汇总
  18. Java 移除List中的元素,这玩意讲究!
  19. 大数据之hive:行列转换系列总结
  20. Oreo对A2DP codec的支持

热门文章

  1. VR/AR迷失元宇宙“硝烟”
  2. 学习笔记:RTC时钟
  3. forEach遍历数组
  4. 判断图形是否封闭算法
  5. 代码随想录算法训练营第七天|454.四数相加II ● 383. 赎金信 ● 15. 三数之和 ● 18. 四数之和
  6. 个人网站已备案,更换服务器后需要重新备案嘛?
  7. 设计模式 - 结构型设计模式 - 桥梁模式(Java)
  8. Javascript编写的EditPlus注册码生成器
  9. 适用于磁场中的传感器
  10. Hadoop生态圈(九)YARN架构深入学习