问题标签 [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 回答
1632 浏览

java - Java 线程内部结构

我研究 Java 的内部结构已经有一段时间了。我很想学习和理解 Java 中线程/锁定是如何发生的。

因此,为了访问同步方法或同步块,线程必须首先获取对象上的锁。所以,现在,这就是我需要更多光的地方。

那么,每当线程获取对象上的锁时,它是否会在内部增加信号量的值?如果答案是肯定的,那么让我们来看看这个场景。

因此,假设有两个线程:Thread 1 和 Thread 2。假设Thread1首先进入 method_1,因此首先获得了 xyz 上的锁。而且,现在说,Thread2进入 method_2 并尝试获取 xyz 上的锁定。会发生什么?(对我来说,Thread2 将被阻塞,因为它发现对象的信号量值>0)

让我知道我的推理是否正确。

0 投票
3 回答
6612 浏览

java - 如何中断 Java 中的同步语句?

我有两个线程想要在同一个对象上同步。如果某个条件已经满足, TheadA需要能够中断 Thread 。B这是两个线程做什么/应该做什么的一些伪代码。

A:

乙:

这是我无法解决的情况:

  • 线程A抓取共享资源并做一些事情。
  • 同时,线程B到达同步块,等待A释放它的共享资源。
  • 线程A在做事时意识到线程 B 不应该拥有共享资源,并试图中断线程B。但是 ThreadB已经超过了InterruptedException可以抛出 an 的点。

我的问题是,有没有办法在线程等待时中断线程synchronized

0 投票
4 回答
611 浏览

java - 许多读者,一位作者:我需要同步这个吗?

当许多线程访问 get 方法而只有一个线程访问 setList 方法时,我需要同步吗?

我不在乎读者是否获得旧数据,但数据应该是一致的。

詹宁

0 投票
2 回答
1345 浏览

java - 如何锁定(同步)静态类?

我正在创建一个静态类,它将保存一些带有信息的向量。我必须使其同步,以便在有人正在编辑或读取向量时锁定课程。

做这个的最好方式是什么?

有一个像这样在类内部同步的函数是否足够:

提前致谢 :)

0 投票
1 回答
760 浏览

text-editor - 具有同步滚动和拼写检查功能的文本编辑器

我正在寻找具有以下 2 个功能的文本编辑器: - 同步滚动:您可以有 2 个并排的选项卡,并且可以同时滚动两个选项卡。- 键入时进行拼写检查(突出显示、下划线单词、即时拼写检查)我目前一直在使用 Notepad++ 正是因为同步滚动的这一功能,但是拼写检查支持很弱。我什至不介意找到具有这些功能的文字处理器,因为我同步滚动的主要用途是翻译文本,同时显示两种语言文本。

我会很高兴你的建议。

0 投票
3 回答
959 浏览

java - 什么是在本地文件系统(Java)上持久获取 ACID 事务的简单方法?

我正在开发一个小型(java)项目,其中网站需要维护一个(最好是逗号分隔的)注册电子邮件地址列表,仅此而已,并且能够检查地址是否在列表中。我无法控制托管或服务器缺乏数据库支持。

Prevayler 似乎是一个很好的解决方案,但该网站是一座鬼城,几乎所有应该存在的地方都缺少示例代码,所以我有点警惕。

为此类任务推荐了哪些其他选项?

0 投票
4 回答
5129 浏览

python - Django中的线程同步

有什么方法可以阻止像在 Django 中同步的 Java 这样的关键区域?

0 投票
4 回答
3815 浏览

java - Java 内存模型:重新排序和并发锁

java meomry 模型要求synchronize在同一监视器上同步的块对在这些块中修改的变量强制执行前后处理。例子:

x==true在这种情况下,只要线程 A 已经通过了该块,线程 B 就会看到synchronized。现在我正在重写大量代码以使用更灵活(据说更快)的锁java.util.concurrent,尤其是ReentrantReadWriteLock. 所以这个例子看起来像这样:

编辑:该示例已损坏,因为我错误地转换了代码,如matt b所述。固定如下:

但是,我没有在内存模型规范中看到任何暗示这种锁也暗示着必要的排序。研究实现它似乎依赖于对内部 volatile 变量的访问AbstractQueuedSynchronizer(至少对于 sun 实现)。然而,这不是任何规范的一部分,而且对非易失性变量的访问并没有真正考虑由这些变量给出的内存屏障覆盖,是吗?

所以,这是我的问题:

  • synchronized假设与“旧”块相同的顺序是否安全?
  • 这是在某处记录的吗?
  • 访问任何 volatile 变量是否是任何其他变量的内存屏障?

问候, 史蒂芬

--

对亚纳蒙的评论:

看下面的代码:

据我了解,内存屏障强制第二个输出显示 2,但对其他变量没有保证影响......?那么这如何与访问 volatile 变量相比呢?

0 投票
3 回答
1107 浏览

android - 两个android线程和不同步的数据

我有一个(也许是愚蠢的)问题:

我使用 2 个线程,一个正在写浮点数,一个正在永久读取这个浮点数。我的问题是,当我不同步它们时会发生什么更糟的事情?如果某些值不正确,那也没有问题,因为它们每次写入操作都会切换一点。我目前以这种方式运行应用程序并且没有任何问题,所以我想知道会发生什么更糟的情况?

读/写冲突会导致像 12345 这样的数字被写入 54321 并且红色同时出现例如 54345 ?或者可能发生更糟糕的事情?(我不想使用同步来尽可能快地保持代码)

0 投票
3 回答
522 浏览

java - Java中的同步方法

我有个问题。在下面的代码中,如果一个线程在等待语句中被阻塞,而另一个线程尝试执行 foo(),会打印 hello world 消息吗?为什么?