java同步的意思_“同步”是什么意思?
我对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同步的意思_“同步”是什么意思?相关推荐
- java同步异步区别_同步请求和异步请求的区别
同步请求和异步请求的区别 先解释一下同步和异步的概念 同步是指:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式. 异步是指:发送方发出数据后,不等接收方发回响应,接着发送下个数据包的 ...
- 线程同步 线程安全_同步装饰器来替换线程安全类
线程同步 线程安全 您知道什么是线程安全吗? 如果没有,下面是一个简单的示例. 所有类都必须是线程安全的,对吗? 并不是的. 其中一些必须是线程安全的? 又错了. 我认为它们都不必是线程安全的,而它们 ...
- python播放音乐同步歌词范晓萱_同步_范晓萱_高音质在线试听_同步歌词|歌曲下载_酷狗音乐...
范晓萱 - 同步 专辑: 同步 歌手: 范晓萱 [id:$010126C0] [ar:范晓萱] [ti:同步] [by:] [hash:d71f1a9610608a9caf43609ffd37686 ...
- java同步异步调用_详解java 三种调用机制(同步、回调、异步)
1:同步调用:一种阻塞式调用,调用方要等待对方执行完毕才返回,jsPwwCe它是一种单向调用 2:回调:一种双向调用模式,也就是说,被调用方在接口被调用时也会调用对方的接口: 3:异步调用:一种类似消 ...
- 关于java线程同步的笔记_线程同步(JAVA笔记-线程基础篇)
在多线程应用程序中经常会遇到线程同步的问题.比如:两个线程A.线程B可能会 "同时" 执行同一段代码,或修改同一个变量.而很多时候我们是不希望这样的. 这时候,就需要用到线程同步. ...
- scala和java像不像_关于Java和Scala同步的五件事你不知道
scala和java像不像 实际上,所有服务器应用程序都需要在多个线程之间进行某种同步. 大多数同步工作是在框架级别为我们完成的,例如通过我们的Web服务器,数据库客户端或消息传递框架. Java和S ...
- java runnable线程锁_多线程 java 同步 、锁 、 synchronized 、 Thread 、 Runnable
线程 1 线程概述 1.1 什么是线程 v 线程是程序执行的一条路径, 一个进程中可以包含多条线程 v 一个应用程序可以理解成就是一个进程 v 多线程并发执行可以提高程序的效率, 可以同时完成多 ...
- java 同步解决不安全类_「JAVA」Java 线程不安全分析,同步锁和Lock机制,哪个解决方案更好...
线程不安全 线程不安全的问题分析:在小朋友抢气球的案例中模拟网络延迟来将问题暴露出来:示例代码如下: public class ImplementsDemo { public static void ...
- java 同步与异步区别_同步和异步有何异同,在什么情况下分别使用它们?
2015-05-12 06:30:01 阅读( 4 ) 通俗版:举个例子:普通B/S模式(同步)AJAX技术(异步) 同步:提交请求->等待服务器处理->处理完毕返回 这个期间客户端浏览器 ...
最新文章
- 三两下实现NLP训练和预测,这四个框架你要知道
- Nucleus PLUS任务调度
- 什么是域名服务器(DNS)
- 简单五步,实现物联网批量创建设备
- 这个冬天,头秃了,口袋也空了......
- flowable 和 activty工作流 使用视图方案解决系统内部用户、组、用户和组关联
- java 线程 释放_java线程似乎不会被释放
- PyTorch 深度学习:37分钟快速入门——FCN 做语义分割
- python环境的打包与加载
- linux源码Makefile详解(完整)-转
- API之实用工具Postman 使用方法
- HandyJSON和SwiftyJSON的应用
- SecureCRT的安装与破解(过程很详细!!!)
- Win10控制面板打不开怎么办?
- 判断三维空间两线段是否相交(附代码)
- 201809 CCF
- 执行 this.$destroy()后原生DOM事件也无法执行
- 数据仓库(9)数仓缓慢变化维度数据的处理
- 为什么人脸识别系统总是认错黑人?
- 你跳槽怎样考虑可持续性发展