问题标签 [synchronized-block]
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.
rx-java2 - RxJava - 同步块 - 内部源
我想使用同步块作为 flatMap 的来源。但是我需要使用这个构造来处理(方法 processItem),而不仅仅是在创建内部源时。
这个 Observable 每 5 分钟调用一次(例如 Observable.interval)
我的 processesItem 方法如下所示:
两种内部方法都返回 Single。
它是从服务器定期更新的方法的一部分。我需要使用从其他项目类调用的用于修改项目(更新、删除)的方法(与项目同步)来序列化 processItem 方法调用(从服务器定期同步项目)。
主要问题是定期更新可以重写新更新的项目。
实际上我使用这个解决方案:
更新新项目的链:
定期更新链:
我知道这不是明确的 RxJava 解决方案。
你知道这个问题的更好解决方案吗?
java - 为什么我的同步方法不能正常工作?
我有这个打印计数器的同步方法,我有 4 个线程,所以我希望我的计数器的最终值为 400000,因为我的计数器是一个静态变量。
但是每次我运行我的代码时,它都会给我不同的计数器值。
以下是我的代码:
java - AtomicInteger 与同步块
我有一个问题,我需要同步访问java中的整数数组。我的代码看起来像这样。
目前我正在使用单锁来同步对整数数组的访问。但我想为每个计数器使用一个锁。
所以我将代码修改为如下所示。
但是我的同事建议我使用 AtomicInteger 而不是同步块。
AtomicInteger 是否与同步块具有相同的效果?
java - 在java中使用这个关键字和同步块
我有两个线程可以访问一个对象。使用同步(a),我在对象a上提供锁,所以现在每次线程都可以访问对象“a”并修改它。如果执行此代码,我们有1 2。有时没有同步块我们得到2 2。(线程 t1 得到 i 并增加 i 现在线程 t2 得到 i 并增加然后线程 t1 得到 i 并打印 2,线程 t2 也得到 i 并打印 2)如果我是真的为什么我们不能使用同步(这个)而不是同步(一个)?
java - 为什么不同线程两次输入了“同步(锁定)”?
在这个简单的例子中,我有两个synchronized (theLock)
由不同的线程访问
为什么新创建的线程可以访问synchronized (theLock)
section里面?据我了解,theLock
已经被主线程获取,新的应该永远阻塞。相反,我看到它也进入了synchronized
。
这是一个输出
java - 如果我们在双重检查单例模式中只使用外部空检查怎么办?
问题 1:为什么在多线程的单例模式中我们需要两个空值检查?如果我们只使用外部检查怎么办?
问题2:以下有什么区别:
1:直接使用synchronized()里面的类名
2:在 synchronized() 中使用静态最终对象
3:在 synchronized() 中使用new Object( )
java - 从方法返回的同步代码中的对象
我想要一个同步块,其中要同步的对象是从方法调用返回的:
是否假设“someGetMethod”已同步或仅“//同步块”部分?
先感谢您
编辑:我有一个集合(要锁定的对象映射)。“someGetMethod”检查对象是否存在于地图上,如果没有,它将添加并返回它以便被锁定。从下面的答案中,我了解到“someGetMethod”可以返回一个已经在 Map 上的值,但是在进入同步块之前,切换到另一个线程,这可能会删除上述值。结果,另一个线程可能通过“someGetMethod”进行相同的检查,现在得到不同的结果。所以看来我应该从同步块中删除,有更好的选择吗?
Edit2:谢谢大家的帮助。我发现了一个类似的问题 - Java synchronized block using method call to get synch object
java - 同步块锁定在类
在下面的生产者和消费者代码中,我认为生产()和消费()方法在类锁(Processor.class)上是同步的,但是我收到一个异常说明 IllegalMonitorStateException,它发生在我们不使用的对象上t 获取锁,但我们通知该对象。
谁能告诉我我在程序中哪里出错了。
java - 在java中使用线程的死锁情况?
我创建了 3 个类,
- 类 InCharge - 应检查当前余额,同时检查
Client
线程应wait()
直到InCharge
线程完成测试(15 秒) - 类客户端 - 应该每 5 秒取款,但是当
InCharge
线程运行Client
线程应该等到InCharge
线程说Notify()
- 类银行 - 持有当前余额,并锁定
Synchronized
块。
根据我的调试,它似乎是InCharge
发送Notify()
但由于某种原因客户端没有收到通知,我猜问题是因为while(true)
,但我想不出解决它的方法。
你能帮忙找出问题吗?
主要的:
银行:
客户:
负责:
java - 为什么运行以下代码后 count1 < count2?count1 和 count2 都应该是 2000000
在JDK11中编译运行,看看结果。sum1 是同步代码所用的时间,而 sum2 是 AtomicInteger 代码所用的时间。count1 是对同步 count++ 的调用次数进行计数的结果。count2 是相同数量的组合调用,但使用 AtomicInteger。计数应为 2000000,并且预计 sum1 > sum2 以 ms 为单位。但是,count1 明显减少了,那么电话会去哪里呢?