问题标签 [countdownlatch]
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.
java - Java 支持三种不同的并发模型
我正在多线程环境中经历不同的并发模型(http://tutorials.jenkov.com/java-concurrency/concurrency-models.html)
本文重点介绍了三种并发模型。
并行工作者
第一个并发模型就是我所说的并行工作者模型。新来的工作分配给不同的工人。
流水线
工人像工厂流水线上的工人一样被组织起来。每个工人只完成全部工作的一部分。当该部分完成后,工人将工作转发给下一个工人。
每个工作人员都在自己的线程中运行,并且不与其他工作人员共享任何状态。这有时也称为无共享并发模型。
功能并行
函数并行的基本思想是你使用函数调用来实现你的程序。函数可以被视为相互发送消息的“代理”或“参与者”,就像在流水线并发模型(AKA 反应式或事件驱动系统)中一样。当一个函数调用另一个函数时,这类似于发送消息。
现在我想为这三个概念映射 java API 支持
Parallel Workers:是ExecutorService、ThreadPoolExecutor、CountDownLatch API 吗?
装配线:将事件发送到JMS等消息传递系统并使用队列和主题的消息传递概念。
功能并行:在某种程度上ForkJoinPool和 java 8 流。与流相比,ForkJoin 池更容易理解。
我映射这些并发模型是否正确?如果不是请纠正我。
java - 使用线程分割一个巨大的文件
我有一个包含超过 5 亿行的文本文件,其结构如下:
我正在编写一个方法,给定“lat”和“lon”它应该返回路径。我想把这个巨大的文件分成“sec0,sec1,sec2,sec3,...,secn”的部分,然后为每个部分创建线程来寻找那个“lat”和“lon”,当一个线程返回路径,其他线程将被杀死。
我的问题是,我的方法有效吗?什么是此类问题的最佳解决方案。
java - 即使在java中出现异常后线程执行也会继续
我在下面的代码中有我的线程骨架。我使用了一个简单的倒计时锁存器。我陷入了线程 1 取决于线程 2 完成的情况。如果没有异常,代码运行正常。但例外的机会更多。如果线程 2 或任何线程中发生异常,我希望所有线程停止执行。即使发生异常,我的独立线程也会继续执行。我还在线程 1 中使用了一个标志来检查线程 2 中是否发生异常,我特意将除以零异常作为示例来测试异常。我无法找到解决方案。请帮我..!
我的输出是:
java - Android:CountDownLatch 不起作用
以下是我使用 CountDownLatch 和 ExecutorService 的课程。我所有的 startTest 方法都来自我的活动。当我运行此代码时,CountdownLatch 不会等待。
有人可以告诉我我做错了什么吗?先感谢您
java - How to reduce the time delay to reach run method of Runnable class using ExecutorService Java
I was trying to implement a real-time executing application in which a button click event will assign a task to a Thread , which will call a midi Method to play some music. The music has to be started immediately when button is clicked with a small delay. The midi codes are implemented in the run method of Runnable class. But to reach the 1st statement of run method after the button click event itself is taking more than 2 milli second. I tried to use Executor Service, since it can have collection of newly created threads and it reduce the time delay caused by thread. I am new to ExecutorService application. what i observed was at the first time when the button is clicked its taking more than 2 milli sec but when it is restarted the delay is reduced. but at some stage it is increasing to more than 4 milli sec also.. How this delay can be maintained to less than one milli sec everytime. Is there any way to do it using ExecutorService or any other Service providers... Any helps will be appreciating. Here is my code, how i used ExecutorService, If it is not in the proper way to use it please help me correct it.
TestExecutorService.java
output:
java - CountDownTimer 根本不工作
我正在尝试在线程中运行 CountDownTimer,但它不起作用..
因此,在 MainActivitys onCreate 中,我在 Button 单击时启动它,如下所示:
runner
是实现的类的实例Runnable
:
使用此代码,应用程序只会在登录 onClick、运行和启动后冻结。更改runOnUiThread(runner)
为new Thread(runner).start();
使应用程序在登录 onClick 后立即崩溃,没有更多输出。
一些研究表明,由于使用了 Handler,CountDownTimer 需要在 UI-Thread 上运行。但它只是冻结。
当我删除整个 Thread 内容并仅调用runner.run();
Buttons onClick (同时删除运行器实例中的实现 Runnable)时,我得到以下日志条目:onCLick, run, starting, started, waiting
. 但是随后什么也没有发生,好像计时器没有运行,没有调用 onTick 方法。
如何修复我的 CountDownTimer?
java - 以下 java 程序使用 CountDownLatch 的输出
以下 java prgram 将输出什么 - 是否总是如下所述,或者存在任何可能不同的极端情况 -
预期输出 -
task1 关键部分已完成
task2 关键部分已完成
Java 程序 -
java - 使用 CowntDownLatch 测试强制竞争条件会导致 java.lang.IllegalMonitorStateException
我试图创建一个测试,我试图强制竞争条件(或至少增加其发生的可能性)并且我使用了CountDownLatch
.
问题是我java.lang.IllegalMonitorStateException
在我的CountDownLatch.wait()
. 我当然在滥用,CountDownLatch
而且我肯定不会以聪明的方式创建这个测试。
这个简单的代码重现了我的想法和我的问题(我也有一个要点):
如果当前线程不是对象监视器的所有者,则抛出的CountDownLatch.wait()
状态的 javadoc 。IllegalMonitorStateException
但恐怕我不明白这意味着什么,我也无法弄清楚如何重新创建我的代码来避免这个异常。
编辑:根据答案中提供的提示,我创建了上面示例的新版本,并将其存储在这个 gist中。我现在没有任何例外。
java - 倒计时和进一步同步
假设我有以下类定义,当一个线程想要为多个(可能)等待的线程设置一个时:
在我看来,a 需要是 volatile 的,但我不确定……有人可以分享一下为什么(如果有的话)需要围绕 getA 进行额外的同步,或者 a 需要是 volatile 的吗?