问题标签 [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 投票
2 回答
4213 浏览

java - 在两个或多个对象上同步 (Java)

我有类似于以下的代码:

putInCache每秒被大约 139 个线程调用。我可以确定这两种方法会在cache和上同步FREESPACE吗?另外,checkFreeSpace()多线程安全吗,即我可以确定一次只会调用一次此方法吗?这段代码的“多线程安全”可以改进吗?

0 投票
5 回答
1992 浏览

c# - C#:如果多个线程只读取它,我是否必须使 ArrayList 同步

我在一个类中使用静态 ArrayList 来存储有关不可更新的数据库字段的信息。我打算在构造函数中初始化它一次(初始化方法调用由构造函数中的锁保护)。之后,多个线程检查 arraylist 是否包含一个字段。我是否必须以任何方式控制此读取访问权限?例如通过调用 ArrayList.Synchronized。

0 投票
2 回答
300 浏览

java - 当我尝试访问同步列表时,为什么我的线程会停止?

出于某种原因,这个输出:

只打印出“GantryAgent: Try to print 'tasks'...”,但不会打印以下任何消息。我猜测线程在尝试访问同步列表“任务”时会以某种方式“卡住”,但我不知道为什么会这样。

'tasks' 的声明和初始化如下:

谁能指出我错过了什么?

啊! 我怀疑我可能有罪魁祸首:

在我的调度程序(这是一个代理设计)中,我检查“任务”是否为空,然后调用 doReturnToOriginalPos()。也许这只是一次又一次地发生得太快以至于其他方法没有机会修改它?

这确实是问题所在!它在我的调度程序中一直被调用得如此之快,以至于没有其他东西可以访问“任务”。感谢大家的帮助!

0 投票
2 回答
7284 浏览

java - java同步块超过1个对象?

我有两个数组,我需要跨线程同步对它们的访问。我将把它们放在一个同步块中。问题是,我只能一次性将其中之一传递给“同步”。

如何确保对两个阵列的访问是同步的?我是否将它们放在一个类中并创建一个对象?或者我只在同步块中访问另一个数组,这会处理对它的同步访问?

谢谢,

0 投票
1 回答
642 浏览

java - 了解同步

鉴于此代码:

我知道synchronized关键字使线程依赖于对象的锁。问题:

a) 标记为的方法synchronized完成后是否立即释放锁?或者一旦线程的run()方法完成 b) 我可以确保任何一个线程都将打印其名称并且1 2在另一个之前打印它的名称吗?

0 投票
1 回答
454 浏览

java - Java:同步(对象)和 RejectedExecutionException

我有这个问题:

我有几个线程可以访问一个对象synchronized(Object) { ... }

但有时会引发此异常:

执行:java.util.concurrent.RejectedExecutionException

为什么?我该怎么办?

谢谢

0 投票
6 回答
31507 浏览

java - 同步方法还是使用spring @transactional?

我有一种用于发送电子邮件的方法。我想锁定这个方法,这样每次只有一个线程可以访问它,其余的同时池化。我应该同步方法还是使用 spring @transactional PROPAGATION_REQUIRED ?

在我的服务层

0 投票
1 回答
162 浏览

java - 同步(对象){}问题

我遇到了一个性能问题,其中 880 个线程同时在执行synchronized() { method() } ,这导致了一个主要的性能问题。

是否有可能等待的线程有一些限制synchronized()?我在哪里可以得到限制?

另一个问题是最好放入什么synchronized( ? )。因为我有不同的类访问该变量,所以我不能把synchronized(this).

0 投票
2 回答
20586 浏览

java - 在同步子句中抛出异常的副作用?

从同步子句中抛出异常是否有任何不清楚的副作用?锁会发生什么?

0 投票
4 回答
2514 浏览

java - Java中的线程状态机

有没有办法让线程处于等待更改的状态?我的意思是等待某些事情发生(更改 var、调用方法等),也许它需要使用事件侦听器或同步对象/方法。

像这样的状态机的常用方法

状态机示例

这使用了一个 do{..}while(true) 循环,它可以用于单线程(并且没有 GUI)应用程序,但它不能与线程一起使用..(至少你想为每个线程状态机使用一个核心)

因此,为了避免处理器消耗任务,一种简单(且丑陋)的方式是“定期检查器”,我的意思是添加一个 Sleep 其他想法是定义一个同步对象并使用等待而不是线程 Sleep

例子:

缺点是使用同步增加了复杂性,或者在 TIME_CONST 内发生的任何事情都是不可见的

我想知道这样做的其他想法,谢谢!