synchronized相关内容

如何在 Julia 中使用锁

我正在与 Julia 合作.IDE 是 Juno. 如果我是对的,@async 可以生成一个任务,它就像一个线程. 所以我们可以这样做: @async 开始# 做点什么1结尾@async 开始# 做点什么2结尾 现在,我需要锁定一个线程.例如,do something1 是将消息推送到列表,do something2 是从同一列表中弹出消息. 这就像 Java 中的 同步. ..
发布时间:2022-01-23 19:32:28 其他开发

通过 this vs dummy 对象同步

到目前为止,我已经看到了同步块的用法,但最近我了解到使用虚拟对象更可取.我找到了与此相关的以下主题. Java 同步方法锁定对象或方法? 总而言之,在下面的代码中,两个不同的对象不能同时运行 addA 和 addB,因为两者都使用 this 来锁定. private int a;私人int b;公共同步无效 addA(){一个++;}公共同步无效 addB(){b++;} 如果我使 ..

在 notifyAll() 之前没有被线程锁定的同步对象

我想要一个布尔值来通知系统的某些部分特定服务已启动. 由于某些奇怪的原因,我收到错误 java.lang.IllegalMonitorStateException: object not locked by thread before notifyAll(). 奇怪的是 notifyAll() 位于一个同步块中,该块控制我调用 notifyAll() 的对象. 我的课是这样开始的 ..

使用 PHP 的同步函数

如何使 PHP 中的函数同步,从而不会同时执行相同的函数?第二个用户必须等到第一个用户完成该功能.然后第二个用户可以执行该功能. 谢谢 解决方案 这基本上归结为在某处设置一个标志,该函数被锁定并且在第一个调用者从该函数返回之前无法执行.这可以通过多种方式完成: 使用锁定文件(第一个函数锁定一个文件名“f.lok",第二个函数根据该评估检查锁定文件是否存在并执行或不执行) 在数 ..
发布时间:2022-01-22 20:05:28 PHP

在java中同步一个对象,然后更改同步变量的值

我遇到了这样的代码 同步(obj){obj = 新对象();} 感觉有些不对劲,我无法解释,这段代码是OK还是真的有什么问题,请指出.谢谢 解决方案 这可能不是你想做的.您正在对不再持有引用的对象进行同步.考虑另一个运行此方法的线程:在对 obj 的引用被更新为指向新对象之后,它们可能会进入并尝试锁定.那时,它们正在与第一个线程不同的对象上进行同步.这可能不是您所期望的. 除非您 ..
发布时间:2022-01-22 19:59:12 Java开发

为什么等待/通知/通知所有方法在 java 中不同步?

在 Java 中,当我们需要调用 wait/notify/notifyAll 时,我们需要访问对象监视器(通过同步方法或同步块).所以我的问题是为什么 java 不使用同步等待/通知方法来消除从同步块或方法中调用这些方法的限制. 如果这些被声明为同步,它将自动获取监视器访问权限. 解决方案 对于 notify 和 notifyAll,您的想法的问题是,当您通知时,您通常在同一个同步块 ..
发布时间:2022-01-22 19:58:19 Java开发

你应该同步运行方法吗?为什么或者为什么不?

我一直认为在实现 Runnable 的 java 类中同步 run 方法是多余的.我想弄清楚人们为什么这样做: 公共类 ThreadedClass 实现 Runnable{//其他的东西公共同步无效运行(){而(真)//在线程中做一些事情}}} 这似乎是多余和不必要的,因为他们正在为另一个线程获取对象的锁.或者更确切地说,他们明确表示只有一个线程可以访问 run() 方法.但是既然是run方法 ..
发布时间:2022-01-22 19:50:52 Java开发

在 Java 中避免同步(this)?

每当 SO 上出现关于 Java 同步的问题时,有些人非常急切地指出应该避免使用 synchronized(this).相反,他们声称,最好锁定私有引用. 一些给定的原因是: 一些恶意代码 可能会偷走你的锁(这个很受欢迎,也有一个“意外"变体) 同一类中的所有同步方法使用完全相同锁,会降低吞吐量 你也(不必要地)暴露了很多信息 包括我在内的其他人认为 synchronized ..
发布时间:2022-01-22 19:42:52 Java开发

对 Javascript 方法的调用是线程安全的还是同步的?

我还是 Javascript 的新手.我正在开发一个简单的页面,我在其中单击一个按钮以获取 servlet 上的值并显示它.它运行良好,除非我疯狂地点击按钮.有时,显示结果为空. 我想知道这是否是由同时调用以下相同函数引起的: function loadXMLDoc2(retr) {var xmlhttp;如果(window.XMLHttpRequest){//IE7+, Firefox, ..
发布时间:2022-01-06 23:06:40 前端开发

锁定可变对象 - 为什么它被认为是一种不好的做法?

请参阅此答案.它说: 六个非常糟糕的例子; ... 锁定可变字段.例如同步(对象){ 对象 = ...;} 锁定可变字段有什么问题?如果 object 被声明为 final 但不是一个不可变的类怎么办? 解决方案 这是个坏主意,因为如果另一个线程更改了临界区中的引用,线程将不再看到相同的引用,因此它们不会同步在同一个对象上,从而不受控制地运行.示例: 同步(锁 ..

字段读取同步和 volatile 的区别

在一篇不错的文章中并发提示,一个例子被优化为以下几行: double getBalance() {帐户acct =验证(名称,密码);同步(acct){返回acct.balance;}} 如果我理解正确的话,同步的重点是确保这个线程读取的 acct.balance 的值是当前的,并且任何对 acct.balance 中对象字段的未决写入也被写入到主内存. 这个例子让我想到了一点:将acc ..
发布时间:2021-12-28 22:59:48 Java开发

在java中同步一个对象,然后改变synchronized-on变量的值

我遇到了这样的代码 synchronized(obj) {obj = 新对象();} 感觉有些不对,我无法解释,这段代码是否正常或确实有什么问题,请指出.谢谢 解决方案 这可能不是您想要做的.您正在同步一个不再持有引用的对象.考虑另一个运行此方法的线程:在对 obj 的引用更新为指向新对象之后,它们可能会进入并尝试锁定.那时,它们在与第一个线程不同的对象上进行同步.这可能不是您所期望的 ..
发布时间:2021-12-28 22:59:09 Java开发

在 lockObject 上同步和使用 this 作为锁有什么区别?

我知道同步方法和同步块之间的区别,但我不确定同步块部分. 假设我有这个代码 class 测试 {私有整数 x=0;私有对象 lockObject = new Object();公共无效incBlock(){同步(锁定对象){x++;}System.out.println("x="+x);}public void incThis() {//与同步方法相同同步(这个){x++;}System. ..
发布时间:2021-12-28 22:33:49 Java开发

Java 8 接口方法中不允许“同步"的原因是什么?

在 Java 8 中,我可以轻松地编写: interface Interface1 {默认无效方法1(){同步(这个){//某物}}静态无效方法2(){同步(Interface1.class){//某物}}} 我将获得我也可以在类中使用的完整同步语义.但是,我不能在方法声明中使用 synchronized 修饰符: interface Interface2 {默认同步 void method ..
发布时间:2021-12-28 09:08:06 Java开发

如果一个同步方法调用另一个非同步方法,非同步方法是否有锁

在 Java 中,如果同步方法包含对非同步方法的调用,那么另一个方法是否仍然可以同时访问非同步方法?基本上我要问的是同步方法中的所有内容都对其进行了锁定(包括对其他同步方法的调用)? 解决方案 如果一个同步方法调用了另一个非同步方法,那么非同步方法是否有锁 答案取决于上下文. 如果你在一个对象的synchronized 方法中,那么其他线程对同样synchronized 的 ..
发布时间:2021-12-23 08:59:41 Java开发

Java 中的synchronized 是继承的吗?

我有超类 Point 和一个 synchronized 方法 draw().Point 的子类是否会继承 synchronized 如果我覆盖它们中的方法 draw() 或者我必须始终编写它? 解决方案 不,您将始终必须编写 synchronized.如果您调用超类的同步方法,这当然是同步调用.synchronized 不是方法签名的一部分. 见http://gee.cs.osweg ..
发布时间:2021-12-17 19:43:06 Java开发

@synchronized 是否保证线程安全?

参考此答案,我想知道这是正确的吗? @synchronized 不会使任何代码“线程安全" 因为我试图找到任何文档或链接来支持这个声明,但没有成功. 对此的任何评论和/或答案将不胜感激. 为了更好的线程安全,我们可以使用其他工具,这是我知道的. 解决方案 @synchronized 如果使用得当,确实可以使代码线程安全. 例如: 假设我有一个访问非线程安 ..
发布时间:2021-12-06 21:24:08 移动开发