问题标签 [java.util.concurrent]

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 投票
4 回答
5806 浏览

java - lock.lock() 在尝试之前

有什么区别:

编译顺利,程序也可以工作(我的意思是相同的输出)

我应该放 lock.lock(); 尝试之前还是之后?...

谢谢你的帮助

0 投票
4 回答
1331 浏览

java - 多线程Java应用程序中的数据缓冲

我有一个多线程应用程序,它有一个生产者线程和几个消费者线程。数据存储在共享线程安全集合中,并在缓冲区中有足够数据时刷新到数据库。

从 javadocs -

一个队列,它还支持在检索元素时等待队列变为非空,并在存储元素时等待队列中的空间变为可用的操作。

检索并删除此队列的头部,如有必要,等待元素可用。

我的问题-

  1. 是否有另一个具有 E[] take(int n) 方法的集合?即阻塞队列一直等到一个元素可用。我想要的是它应该等到 100 或 200 个元素可用。
  2. 或者,是否有另一种方法可以在不进行轮询的情况下解决问题?
0 投票
2 回答
3157 浏览

java - 阻塞队列和 InterruptedException

我有一个 A 类,其属性为 LinkedBlockingQueue。在 A 的一种方法中,我调用 LinkedBlockingQueue.put() 方法,因为我想在队列中插入一个项目。但是,如果队列已满,我的线程将等到空间可用或我的线程被中断。

问题是即使我的线程被中断,我也希望该项目在队列中。

有没有办法确保我的项目已插入队列?

谢谢

0 投票
2 回答
929 浏览

java - ReentrantReadWriteLock 挂起

知道为什么这个构造函数无限期挂起吗?我正在尝试创建一个线程安全的单例。

顺便说一句,我意识到将锁放在静态吸气剂中可能会更好;我只是想知道在构造函数中使用锁是否本质上是错误的

0 投票
2 回答
146 浏览

java - 为什么不把工作放在这里?

另外为什么异常包含null?这是来自http://www.cs.rice.edu/~wns1/papers/2006-PPoPP-SQ.pdf清单 3的实现

我得到输出

为什么我会得到空值?

0 投票
5 回答
974 浏览

java - 请用这个 put-if-absent 成语解释比赛条件

考虑以下代码并假设列表是同步列表。

我知道上面的代码片段需要在外部同步(由锁保护)以使其完全线程安全。竞争条件在哪里出现?

0 投票
3 回答
1106 浏览

java - “私有”修饰符是否也确保 Java 中的线程安全

阅读Brain Goetz 的这篇关于安全构造技术的优秀文章后,我对清单 5 中给出的评论感到困惑。下面是代码片段:

他为什么要这么说me// Safe because "me" is not visible from any other thread. 两个线程不能同时访问实例变量me吗?

0 投票
2 回答
515 浏览

java - java并发编程中所有线程都将同时启动吗?

在我的程序中,我正在创建 2 个任务。这些任务实现了Callable接口。我将这些传递给 2 个线程以执行线程池类。我的问题是这两个线程会同时启动吗?在java并发编程中,所有线程都会同时启动吗?

0 投票
3 回答
200 浏览

java - 如何在并发 java 编程中指定线程执行?

我正在使用 Callable、Executor 和 Future 对象从单独的线程并行调用 web 服务。执行完所有 web 服务调用后,我在 jsp 中显示结果。

在这里我有一个疑问:如果其中一个 web 服务调用失败,如何在 jsp 中显示成功调用的结果?

如果在这种情况下一个线程需要更多时间来执行,我想跳过该响应并在 jsp 中显示其余结果。

我试图在一个网络服务中添加一个Thread.sleep(1000),但响应在 jsp 中也有延迟。

0 投票
1 回答
873 浏览

java - 我如何在 Java 并发编程中处理 CancellationException?

我正在使用 java.util.concurrent 包来创建一个并行程序。我有 2 个线程:

  • 调用 webservice 方法 1 的线程 1,以及
  • 调用 webservice 方法 2 的线程 2。

我正在指定线程执行超时 - 假设如果线程 1 没有在指定的超时时间内完成执行,那么我必须拦截线程 1,继续使用线程 2 执行并在 jsp 中显示线程 2 结果(注意:如果两者线程需要太多时间来处理请求,然后我不希望 UI 等到它们完成)。

我尝试使用下面的代码,但它抛出了一个 InterruptedException。当一项任务陷入更多泥潭时,我该如何继续执行其他任务?