我对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. 三两下实现NLP训练和预测,这四个框架你要知道
  2. Nucleus PLUS任务调度
  3. 什么是域名服务器(DNS)
  4. 简单五步,实现物联网批量创建设备
  5. 这个冬天,头秃了,口袋也空了......
  6. flowable 和 activty工作流 使用视图方案解决系统内部用户、组、用户和组关联
  7. java 线程 释放_java线程似乎不会被释放
  8. PyTorch 深度学习:37分钟快速入门——FCN 做语义分割
  9. python环境的打包与加载
  10. linux源码Makefile详解(完整)-转
  11. API之实用工具Postman 使用方法
  12. HandyJSON和SwiftyJSON的应用
  13. SecureCRT的安装与破解(过程很详细!!!)
  14. Win10控制面板打不开怎么办?
  15. 判断三维空间两线段是否相交(附代码)
  16. 201809 CCF
  17. 执行 this.$destroy()后原生DOM事件也无法执行
  18. 数据仓库(9)数仓缓慢变化维度数据的处理
  19. 为什么人脸识别系统总是认错黑人?
  20. 你跳槽怎样考虑可持续性发展

热门文章

  1. 安天移动安全助力银行卡检测中心智能POS安全检测
  2. 2022年5月份面试题集合
  3. shell bash
  4. 完全二叉树叶子节点、度为1节点、度为2节点的个数关系
  5. POJ 1971 Parallelogram Counting 排序
  6. 2Speech Emotion Recognition Using Deep Neural Network and Extreme Learning Machine
  7. 十大免费防火墙大盘点
  8. 基于Springboot的食品仓库管理系统设计和实现
  9. 关于左右布局,一边高度不定,另一边和不定高度等高的CSS布局
  10. 关于帧内预测模式的视频隐写代码介绍