java.util.concurrent相关内容
我正在用Java编写一个负载测试应用程序,并且具有一个线程池,该线程池针对被测服务器执行任务.因此,要制作1000个作业并在5个线程中运行它们,我会执行以下操作: ExecutorService pool = Executors.newFixedThreadPool(5); List jobs = makeJobs(1000); for(Runna
..
for(int i = 0; i
..
在ConcurrentHashMap中有分段的概念。这意味着如果两个线程试图访问ConcurrentHashMap,它会分为两个块,默认大小为16。 现在假设在ConcurrentHashMap只有一个场景中两个元素和两个不同的线程来了,thread1尝试修改第一个值,thread2尝试修改第二个值。在这种情况下,ConcurrentHashMap是否会进行分段? 现在在不同的场景中,
..
我想为工作窃取池使用的ForkJoinPool的线程设置名称,由提供 ExecutorService newWorkStealingPool(int并行性) 或 ExecutorService newWorkStealingPool() 到目前为止,我找不到设置自定义的方法这个 ExecutorService 使用的线程上的名称有没有办法?
..
我在我编写的许多应用程序中使用过多线程。在阅读更多内容时,我遇到了 ThreadPoolExecutors 。我无法区分这两种情况。 我理解的是,当我有一项任务时,我应该使用多线程我想将任务分成多个小任务来利用CPU并更快地完成工作。当我设置任务并且每个任务可以相互独立运行时,使用 ThreadPoolExecutor 。 请如果我错了,请纠正我。谢谢 解决方案 ThreadP
..
使用remove()方法好吗?我读过一篇文章,说明同步还没有添加到remove方法中。如何从ConcurrentHashMap中正确删除特定项? 示例代码: ConcurrentHashMap storage = new ConcurrentHashMap(); storage.put(“First”,1);
..
我注意到我的应用程序中的某些命令失败了 由以下原因引起: com.netflix.hystrix.exception.HystrixRuntimeException:GetAPICommand超时并且没有可用的回退。 out:!在com.netflix.hystrix.HystrixCommand.getFallbackOrThrowException(HystrixCommand.ja
..
java.util.concurrent.Executor 如何创建“真实”线程? 假设我正在实现Executor或使用任何执行程序服务(如ThreadPoolExecutor)。 JVM内部如何工作? 解决方案 它调用 ThreadFactory 。查看 Executors 类。请注意,它们都有一个重载参数,您可以在其中提供 ThreadFactory 实现。 ThreadFactor
..
我的代码抛出以下异常: java.util.Link目录中的java.util.ConcurrentModificationException $ ListItr .checkForComodification(LinkedList.java:761) at java.util.LinkedList $ ListItr.next(LinkedList.java:696) at j
..
假设我创建了一个帖子,我有类似的东西: ... //启动所有套接字连接 future = executor.submit (new Runnable() {public void run() {... ... while(( str = in.readLine())!= null) {//在这里做点什么 } } ); executor是
..
假设有以下两个计数器实现: class Counter { private final AtomicInteger atomic = new AtomicInteger(0) ; private int i = 0; public void incrementAtomic(){ atomic.incrementAndGet(); } public synchron
..
我认为使用 ThreadPoolExecutor 我们可以提交 Runnable s在构造函数中传递的 BlockingQueue 中执行或使用执行方法。 另外我的理解是,如果任务可用,它将被执行。 我不明白的是以下: public class MyThreadPoolExecutor { private static ThreadPoolExecutor executo
..
我正在设置一个标志,该标志由任何设置它的线程设置一次。所有其他线程将在不同的时间,经常读取此标志重复。 现在我正在使用AtomicBoolean,它工作正常,但我知道如果经常查询它可能比普通布尔慢得多(不确定是否这是真的 )。 将此更改为静态布尔值是否可以线程安全?无论谁做到这一点,都将标志设置为true,实际上所有这些标志都可以被允许多次设置标志。 我关心的是阅读旗帜的人能够多
..
我是java executor的新手。 我正在使用Java的ExecutorService来启动多个线程来处理数据。 Executor executor = Executors.newFixedThreadPool(poolSize); for(int i = 0; i
..
我对OpenJDK的LinkedBlockingQueue实现中的Node类结构感到有点困惑(在java.util.concurrent中)。 我已经复制了以下节点类的描述: static class Node { E项目; / ** *其中一个: * - 真正的继承者Node * - 这个节点,意味着后继者是head.next * - null
..
假设我有一个 Runnable 实例: class MyTask实现Runnable { public void run(){ //一些繁重的计算需要时间 Thread.sleep(5000) //其余代码 ... } } 然后,我使用ExecutorService提交上述任务: ExecutorService service = Exec
..
我读了一篇关于线程安全地图的文章并得到了一个问题。 Collections.synchronizedMap()代理底层地图,在每个方法上添加 synchronized 块。另一方面, ConcurrentHashMap 不会在读/写操作上锁定整个映射。这意味着多线程系统中的所有操作都更快。 那么现在使用 synchronizedMap()有什么好处? ?我看到了唯一的: 从java 1
..
据说, ReentrantReadWriteLock 适用于一位作家和多位读者。 尽管如此,读者应该等到缓冲区中存在一些数据。 那么,要锁定什么? 我创建了如下的并发对象: private final ReentrantReadWriteLock rwl = new ReentrantReadWriteLock(); protected final Lock read
..
我没有看到以下代码如何产生看似违反对象锁定义的输出。当然只允许一个线程打印“获取锁定”消息,但他们都这样做? class InterruptThreadGroup { public static void main(String [] args){ Object lock = new Object(); MyThread mt1 = new MyThread(lock); My
..
我们有一个stipes(java)网络应用程序需要从一个方法进行大约15个不同的webserivce调用。例如: ... public Resolution userProfile() { serviceOneCall( ); serviceTwoCall(); serviceThreeCall(); serviceFourCall(); .... service
..