java.util.concurrent相关内容

如果只有一个线程正在写入Java中的同步列表/映射

第一个线程正在用对象连续填充集合。第二个线程需要遍历这些对象,但不会更改集合。 当前,我使用 Collection.synchronized 使其具有线程安全性,但是有快速的方法吗? 更新 很简单:只要按下鼠标按钮,第一个线程(ui)就会连续将鼠标位置写入ArrayList。第二个线程(渲染)根据列表绘制一条线。 解决方案 即使同步列表,也不一定是线程-safe进行迭代, ..

了解Java的同步集合

我正在阅读有关以下内容的Java官方 doc 包装器实现,它们是 Collections 中的静态方法,用于获取同步的集合,例如: List list = Collections.synchronizedList(new ArrayList()); ... 我不明白的是以下内容(我引用java doc): 以这种方式创建的集合通常像通常一样是线程安全的同步 ..
发布时间:2020-10-05 06:13:55 Java开发

发生在线程和原子变量之间的第2部分

由于回答在线程和原子变量之间发生之前是断言不成立,因此我需要一个替代方法执行.线程1和线程2分别更新整数t1和t2.一旦更新,则不会对t1或t2进行其他任何更新.分配给t1和t2的值来自一个公共计数器,该计数器在每次分配后都会递增.我需要确保以下断言是正确的; int cnt=0; ReentrantLock lock = new ReentrantLock(); volatile Inte ..
发布时间:2020-09-13 19:46:40 Java开发

发生在线程和原子变量之间

假设一个AtomicInteger c在两个线程(线程1和线程2)之间共享. Thread1使用c.incrementAndGet()设置(仅一次)易失性变量t1. Thread2使用c.incrementAndGet()设置(仅一次)易失变量t2.一旦设置了t1和t2,就不会再由其他任何线程对其进行设置.假设线程1设置t1之后,它检查t2的值并获取null.是否保证随后将t2设置为比t1更高的值 ..
发布时间:2020-09-13 19:42:44 Java开发

AtomicInteger.incrementAndGet()与AtomicInteger.getAndIncrement()

当返回值不重要时, AtomicInteger.incrementAndGet() 方法,如果忽略返回值? 我正在考虑这样的差异,例如哪些差异更常见,以及哪些将使CPU高速缓存中的负载变得更少,或者进行其他任何事情,实际上可以帮助决定比投掷硬币更合理地使用哪一个. 解决方案 由于未给出实际问题的答案,因此,我基于其他答案(感谢,支持)和Java约定得出我的个人看法: incre ..
发布时间:2020-09-13 19:24:44 Java开发

CompletableFuture,可变对象和内存可见性

我试图了解Java 8中的CompletableFuture如何与 Java内存模型.在我看来,出于程序员的理智,以下理想情况下应该成立: 完成CompletableFuture 发生之前任何完成依赖阶段的线程中的动作被执行 注册完成的线程中的操作创建了一个依赖阶段 happen-before 执行了 completion 依赖阶段 java.util.concurrent中有一条注 ..

java.util.concurrent.CompletableFuture中的异常传播

有两个代码段. 在第一个中,我们从任务中创建CompletableFuture,该任务总是会引发一些异常.然后,我们将“异常"方法应用于此未来,然后应用"theAccept"方法.我们不会将Accept方法返回的新的Future赋给任何变量.然后我们在原始将来调用"join".我们看到的是,已经调用了“异常"方法以及"thenAccept"方法.我们看到它是因为他们在输出中打印了适当的行.但 ..

Java目录扫描仪

连续扫描一组目录以查找一组文件名过滤器. 对于每个到达的文件名过滤器,请处理该文件,然后对所有文件重复上述步骤 在jdk 1.5中为此可能推荐的设计是什么,可能使用java.concurrent.Executor和Future 解决方案 我已经对网络抓取工具执行了类似的任务.只需进行一些更改...这是对新发现的目录进行扫描的并发实现.由Executor框架中的线程池提供,它使用Que ..
发布时间:2020-05-28 23:48:36 Java开发

关于倒计时闩锁的实现

我一直在浏览程序,该程序启动三个线程并打印它们的相应值,这样先执行T3,然后执行T1线程,最后执行T2线程.下面是程序. 我只是想知道你们是否可以帮助转换有关倒数锁存器的程序,因为我想使用这种机制来开发它,或者也可以通过对信号量进行计数来完成. 从此相关问题的答案: public class Test { static class Printer implements ..
发布时间:2020-05-14 01:59:42 Java开发

多线程到达,最后一个应该做处理

我正在实现一个日志记录,其中多个线程可以写入一个List日志.最后一个线程应将List的内容写入文件.因此,最后写入List的线程应将List刷新到文件中.最好的方法是什么? 对于List,我只需要对多个作者和一个读者有效的并发类之一. 解决方案 对于我来说,简单的解决方案是实现Closeable,然后使用close方法进行刷新. ..

在生产者使用者示例中第二个线程未启动

我正在尝试通过在Java中使用semaphores来实现生产者和消费者问题.问题是,当我启动两个线程(生产者和消费者)时,消费者不会启动,而生产者在缓冲区已满后会自行阻塞.我的意思是看起来只有一个线程以同步方式工作.因此,正如我提到的,我使用3个信号量,它们是空的,完整的和互斥的.这是最简单的代码; 生产者类别; import java.util.concurrent.Semaphor ..
发布时间:2020-05-14 01:55:33 Java开发

ThreadPoolExecutor应用程序未完成

这个超级简单的应用程序会打印"Hello",但不会完成.我绝对没有理由这么做. JavaDoc ,本节定稿,说 程序中不再引用且没有剩余线程的池将自动关闭. 显然没有引用 tpe,这意味着线程没有完成.但是我不明白为什么.有人可以解释吗? 在这种情况下,解决方案是在main的末尾调用shutdown(),但是我的实际应用更加复杂.新工作是在Runnable内部生成的,所以我不 ..