草庐IT

Tread多线程

全部标签

java - 使用 System.out.print 与 println 的多线程问题

我有以下线程,它每200毫秒打印一个点:publicclassProgress{privatestaticbooleanthreadCanRun=true;privatestaticThreadprogressThread=newThread(newRunnable(){publicvoidrun(){while(threadCanRun){System.out.print('.');System.out.flush();try{progressThread.sleep(200);}catch(InterruptedExceptionex){}}}});publicstaticvoid

java - 线程 "main"java.lang.NoClassDefFoundError : org/apache/commons/codec/DecoderException 中的异常

我尝试通过Solrj查询Solr这是我的代码publicclassReadFromSolr{publicstaticvoidmain(String[]args)throwsMalformedURLException,SolrServerException{Stringurl="http://localhost:8983/solr";try{SolrServerserver=newCommonsHttpSolrServer(url);ModifiableSolrParamsparams=newModifiableSolrParams();params.set("qt","/select"

java - 执行两个线程,一个等待另一个,而主线程继续

如何启动两个线程,其中线程1首先执行,线程2在线程1结束时启动,而主方法线程可以继续其工作而无需锁定其他两个线程?我已经尝试过join()但是它需要从必须等待另一个的线程调用,没有办法做像thread2.join(thread1);这样的事情。如果我在main()中调用连接,我因此有效地停止了主线程的执行,而不仅仅是线程2。因此我尝试使用ExecutorService但同样的问题。importjava.util.concurrent.ExecutorService;importjava.util.concurrent.Executors;importjava.util.concurre

java - ExecutorService 中如何限制线程?

我使用ExecutorService在不同的线程中运行许多任务。有时,过多的Runnable实例在线程池中等待可能会导致OutOfMemory问题。我尝试编写一个阻塞作业执行器来解决它。有没有官方的解决方案?例如:BlockingJobExecutorexecutor=newBlockingJobExecutor(3);for(inti=0;i这是BlockingJobExecutor类:importjava.util.concurrent.ExecutorService;importjava.util.concurrent.Executors;importjava.util.conc

java - 多线程如何破坏Hashmap的内部结构

在Java8fortheReallyImpatient中,Horstmann写道:IfmultiplethreadsmodifyaplainHashMap,theycandestroytheinternalstructure.Someofthelinksmaygomissing,orevengoincircles,renderingthedatastructureunusable.(Section6.2.1)我能理解不同步的并发访问会破坏我的数据。如果两个线程更新相同的值,一个可以覆盖另一个。但是为什么以及如何破坏内部存储器结构? 最佳答案

java - Java 中的多线程 JPEG 图像处理

我在多线程环境中借助图像IO在Java中读取JPEG图像时遇到问题。仅当多个线程尝试读取图像时才会出现问题。症状因不正确的配置文件加载到异常而异:java.awt.color.CMMException:LCMSerror13:Couldn'tlinktheprofiles无论我如何读取图像,通过ImageIO.read或使用ImageReader。源数据(图像)是完全隔离且不可变的。这个问题可能与:https://bugs.openjdk.java.net/browse/JDK-8041429和https://bugs.openjdk.java.net/browse/JDK-80322

java - 使用 JavaFX 任务正确执行多线程和线程池

我有一个选项供用户从FileChooser提交多个文件以供某些代码处理。结果将是读取文件的IO,然后是对存储数据的实际繁重计算。允许用户选择多个文件,并且由于文件处理不依赖于任何其他选择的文件,这让我的生活更容易处理线程。此外,用户需要有一个按钮列表,每个按钮对应一个要取消的任务,以及一个“全部取消”按钮。因此,我必须考虑选择性或集体终止一个或所有任务的能力。最后一个要求是,我不会让用户打开大量文件来阻塞系统。因此,我设计了一个线程数有限的线程池(假设我将任意数量的线程限制在4个)。我不确定如何正确地设置这一切。我有我需要做的事情的逻辑,但使用正确的类是我遇到的问题。我检查过thisr

java - 判断当前线程是否持有 Java `Lock`

假设我有一个java.util.concurrent.locks.Lock的实例是否可以判断锁是否被当前线程持有?假设锁对象只实现了Lock接口(interface),不一定是可重入的,所以调用lock或tryLock可能不是一个好方法检查锁的方法。 最佳答案 Lock接口(interface)本身不提供这样的功能,但是它的通用实现器ReentrantLock有这样的方法:ReentrantLock.isHeldByCurrentThread().但是请注意,如文档所述,此方法的主要目的是调试、断言和测试。如果您需要它用于正常的程序

java - 在自己的线程中运行每个 Spring Scheduler

我有多个带有@Scheduled注释的组件,我看到Spring一次只启动一个组件,即使它们被安排在同一时间运行也是如此。我的用例如下。我希望每个@Scheduled注释在其自己的线程中运行,但每个线程只运行一次。给定这个带有两个调度程序的伪代码:@Scheduled(cron="0*****")//runeveryminutepublicvoidmethodA(){log.info("RunningmethodA");executeLongRunningJob("FinishedmethodA");}@Scheduled(cron="0*****")//runeveryminutepu

java - ActiveMQ OutOfMemory 无法创建更多线程

我正在模拟服务器过载,但出现此错误:java.lang.OutOfMemoryError:unabletocreatenewnativethread我读过这个页面http://activemq.apache.org/javalangoutofmemory.html,我可以增加内存大小。但是我该怎么做呢?我需要修改哪个文件?我尝试通过bin/activemq脚本传递参数,但没有成功。 最佳答案 您的案例对应于massivenumberofthreads。有3种方法可以解决:减少线程数(即文档中的-Dorg.apache.activem