草庐IT

C++11多线程—thread

全部标签

java - 如何在并发线程中操作 "ConcurrentModificationException"和 `values()` 时避免 HashMap `put()`?

代码:我有一个哈希表privateMapmap=newHashMap();一种方法通过调用put(K,V)将K-V对放入其中。另一种方法想要从它的值中提取一组随机元素:intsize=map.size();//size>0V[]value_array=map.values().toArray(newV[size]);Randomrand=newRandom();intstart=rand.nextInt(size);intend=rand.nextInt(size);//returnvalue_array[start..end-1]这两个方法在两个不同的并发线程中被调用。错误:我遇到了

java - Thread 在这里比 Executor 更受青睐吗?

据我了解,Executors有助于处理runnable的执行。例如。当我有几个工作线程完成它们的工作然后终止时,我会选择使用执行程序。执行者将处理创建和终止执行工作线程所需的线程。但是现在我面临着另一种情况。固定数量的类/对象应封装自己的线程。因此线程在创建这些对象时启动,线程将在这些对象的整个生命周期内继续运行。少数对象依次在程序开始时创建并在整个运行时存在。我想在这种情况下线程比执行器更可取,但是当我阅读互联网时,每个人似乎都建议在任何可能的情况下使用执行器而不是线程。有人可以告诉我这里是选择Executors还是Threads,为什么?谢谢 最佳答案

java - 使用JSch使用多线程下载文件

我正在尝试使用多线程从远程服务器下载多个文件。但是,当我使用多个线程时,我得到了java.lang.IOException:Pipesclosed.当我只使用一个线程时,相同的代码工作正常。难道不能使用JSch从同一个远程服务器同时下载多个文件吗?SftpTest.javapublicclassSftpTest{privatestaticListaccessorList=newArrayList();privatestaticListfiles=newArrayList();privatestaticExecutorServicewriterThreadPool=Executors.n

java - Guava:MemoizingSupplier 线程安全

GuavaSuppliers类包含MemoizingSupplier:staticclassMemoizingSupplierimplementsSupplier,Serializable{finalSupplierdelegate;transientvolatilebooleaninitialized;//"value"doesnotneedtobevolatile;visibilitypiggy-backs//onvolatilereadof"initialized".transientTvalue;MemoizingSupplier(Supplierdelegate){this.

java - 有序列表和类线程安全

我有一个类有:2个字段,其中包含按时间排序的列表(list1、list2)。3个只读方法,迭代上面的列表生成汇总统计数据。1变异方法,它在list1中寻找给定“新项目”的匹配项。如果找不到匹配项,它会将“new-item”添加到list1。如果找到匹配项,它会从list1中删除匹配项并将匹配项和“new-item”添加到list2。让我们假设所有方法的多个并发调用是可能的。我需要在最大化性能的同时实现线程安全。方法1(非常慢)-将字段类型声明为ArrayList并在所有方法上使用同步关键字。方法2-将字段类型声明为CopyOnWriteArrayList并同步变异方法。问题方法2是否确

java - 如果从 2 个线程写入 volatile 变量会怎样?

考虑Java并发实践中的片段-@ThreadSafepublicclassSynchronizedInteger{@GuardedBy("this")privateintvalue;publicsynchronizedintgetValue(){returnvalue;}publicsynchronizedvoidsetValue(intvalue){this.value=value;}}同一本书的摘录-AgoodwaytothinkaboutvolatilevariablesistoimaginethattheybehaveroughlyliketheSynchronizedInte

Java AsynchronousFileChannel - 线程使用

我理解Java的AsynchronousFileChannel是一个异步api(不阻塞调用线程)并且可以使用系统线程池中的线程。我的问题是:AsynchronousFileChannel操作是否具有1:1的线程比率?换句话说,如果一个循环使用AsynchronousFileChannel读取100个文件,它会使用100个线程来执行此操作还是仅使用少量线程(以标准NIO方式)? 最佳答案 一般使用的AsynchronousFileChannel实现(例如在Linux上实际使用)是SimpleAsynchronousFileChanne

java - Spring @ExceptionHandler 和多线程

我有以下Controller建议:@ControllerAdvicepublicclassExceptionHandlerAdvice{@ExceptionHandler(NotCachedException.class)@ResponseStatus(HttpStatus.BAD_REQUEST)publicModelAndViewhandleNotCachedException(NotCachedExceptionex){LOGGER.warn("NotCachedException:",ex);returngenerateModelViewError(ex.getMessage(

java - Kafka 0.11 中 sendOffsetsToTransaction 的含义

新的Kafka版本(0.11)支持exactly-once语义。https://cwiki.apache.org/confluence/display/KAFKA/KIP-98+-+Exactly+Once+Delivery+and+Transactional+Messaging我在Java中使用kafka事务代码设置了一个生产者,就像这样。producer.initTransactions();try{producer.beginTransaction();for(ProducerRecordrecord:payload){producer.send(record);}Mapgrou

java - 我如何保证 Thread.sleep 至少 hibernate 那么长的时间?

根据thisquestion,Thread.sleep不一定保证在您指定的时间内hibernate:它可能更短或更长。如果您阅读Thread.sleep的文档,您会发现对于sleep的确切持续时间没有强有力的保证。它特别指出持续时间是subjecttotheprecisionandaccuracyofsystemtimersandschedulers这(有意)含糊但暗示不应过分依赖持续时间。特定操作系统上可能的hibernate持续时间的粒度由线程调度程序的中断周期决定。InWindows,thescheduler'sinterruptperiodisnormallyaround10o