问题标签 [synchronized]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
828 浏览

objective-c - 同步返回objective-c

当我在 Xcode 上执行此操作时,它会返回一个警告:“控制到达非无效函数的结尾”

那个代码有问题吗?

0 投票
5 回答
815 浏览

java - “同步”真的只是语法糖吗?

我是多线程的新手,我编写了这段代码,它通过同时运行的线程递增并打印一个变量来打印数字 1-10000。

这是我正在使用的代码:

这行得通 - 我编写了一个测试程序来检查输出,打印的数字正好是 1-10000。

我的问题是:我听说这synchronized只是语法糖。但是如果不使用它,我似乎无法取得成功的结果。我错过了什么?

0 投票
4 回答
23188 浏览

java - 两个同步方法是否同时执行

我在一个类中有 4 个方法( 、 和m1m2。方法和是方法。另外,我有 4 个线程, ,和。m3m4m1m2m3synchronizedt1t2t3t4

如果t1访问m1方法(同步方法),是否可以同时t2线程访问m2方法(同步方法)?如果不是,t2 的状态是什么?

0 投票
3 回答
5697 浏览

java - Java volatile 修饰符和同步块

由多个线程访问但仅在同步块内的变量是否需要 volatile 修饰符?如果不是,为什么?

0 投票
4 回答
800 浏览

java - 同步部分不阻塞!

昨天我注意到一件很奇怪的事情。似乎两个线程正在同时进入锁定同一对象的两个同步块。

包含相关代码的类 ( MyClass) 类似于:

我创建了一个运行上述类的应用程序的线程转储,当我看到这个时感到非常惊讶:

(为了简单起见,我更改了类和方法的名称,所以不要被这些愚蠢的名称所迷惑。)

似乎线程 http-8080-136 和 http-8080-111 都获得了myLock. 它是同一个对象,因为对象地址是一样的:0x00007fd8a6b8c790。Java 运行时规范说明了这个synchronized关键字:

同步语句代表执行线程获取互斥锁(第 17.1 节),执行块,然后释放锁。当执行线程拥有锁时,没有其他线程可以获取锁。[ Java 语言规范,14.19 ]

那么这怎么可能呢?

线程转储中还有另外 44 个线程“等待”锁定。这是线程等待时的样子:

0 投票
1 回答
137 浏览

php - Firefox 是否会同步同一页面的请求?

我正在使用 Firefox 3.6.6。

我有一个index.php使用以下代码调用的 PHP 脚本:

我打开两个浏览器选项卡,将 URL 复制到每个选项卡中,然后在每个选项卡中快速按 Enter。第一个选项卡在 20 多秒内完成。第二个选项卡在 40 多秒内完成。

我在 IE 中做了同样的实验,两个脚本在一秒钟内完成,大约 20 秒。

这是预期的行为吗?导致我对此进行测试的实际脚本是一个同步过程。我希望任何尝试执行它两次的人都收到进程已经在进行中的错误,而不是让浏览器坐在那里等到它可以再次执行它。

如果这就是 Firefox 的工作方式,它如何确定一个页面何时是重复的,以及它应该将请求排队而不是同时运行它们?

我可以通过在末尾放置一个垃圾 GET 字符串来欺骗它,例如index.phpindex.php?JUNK=1两者都在 20 秒左右完成。

0 投票
5 回答
36110 浏览

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

我知道同步方法和同步块之间的区别,但我不确定同步块部分。

假设我有这个代码

在这种情况下,使用lockObject和使用this作为锁有什么区别?对我来说似乎是一样的。。

当您决定使用同步块时,您如何决定哪个对象成为锁?

0 投票
7 回答
32847 浏览

java - 如何区分等待(长时间超时)退出通知或超时?

有这个等待声明:

它可能会因 InterruptedException 或超时而退出,或者因为在另一个线程中调用了 Notify/NotifyAll 方法,异常很容易捕获但是......

有什么方法可以知道退出原因是超时还是通知?

编辑:

这是一种可行的棘手方法,(尽管我不喜欢它)

0 投票
1 回答
418 浏览

java - 使用同步列表

这是我第一次使用synchronized关键字,所以我仍然不确定它是如何工作的。我有一个希望被多个线程访问的列表,所以我这样做:

现在,我想确保我不会players.add()同时调用players.get(),所以我认为我应该使用同步语句(方法 A 和 B 可以同时调用):

这是正确的程序吗?如果没有,我应该怎么做?

0 投票
3 回答
1896 浏览

java - java同步方法不起作用?

我正在使用与原子变量(java.util.concurrent.atomic 包)进行比较的方法同步来试验 Java 多线程。

以下是课程:

运行 Atomic 或 Synchronized 的结果并不表明变量 integer 是线程安全的,例如:

从结果中,最后 2 行显示 2 个线程正在访问计数器类的整数变量的相同值。也许我在这里遗漏了什么?

谢谢!