草庐IT

Tread多线程

全部标签

java - 如果我使用 JNI 从 C 的多个线程调用 java 函数会怎样?

此链接似乎表明“它只是有效”:(在7.3附加native线程下的底部相当远)http://java.sun.com/docs/books/jni/html/invoke.html我不明白这怎么可能,嵌入式JVM会自动启动自己的线程吗?或者排队JNI调用?否则怎么可能多次调用同一个虚拟机。我没有指示执行任何线程?我能想到的任何工作方式是,如果java代码将简单地在与c代码相同的调用线程中执行。那是对的吗?这意味着我不必在Java中执行任何线程。 最佳答案 jvm不必创建自己的线程,方法调用在创建它们的native线程上执行。Attac

java - 发布对象和线程安全

我在“JavaConcurrencyInPractice”中读到“在完全构造之前发布对象会危及线程安全”。有人可以解释一下吗? 最佳答案 考虑这段代码:publicclassWorld{publicstaticPoint_point;publicstaticvoidmain(String[]args){newPointMaker().start();System.out.println(_point);}}publicclassPoint{privatefinalint_x,_y;publicPoint(intx,inty){_x=

java - "Found 1 deadlock"但跟踪显示未被任何线程锁定

JVM告诉我发生了死锁:FoundoneJava-leveldeadlock:============================="TP-Processor107":waitingforownablesynchronizer0x00002aaaf58e70f0,(ajava.util.concurrent.locks.ReentrantReadWriteLock$NonfairSync),whichisheldby"indexTrackerThread3""indexTrackerThread3":waitingforownablesynchronizer0x00002aaaf4

java - 持有多个锁的线程进入 wait() 状态。它会释放所有持有的锁吗?

我编写这个程序是为了检查线程t1是否持有两个不同对象的锁:Lock.class和MyThread.class使用MyThread.class.wait()在MyThread.class实例上进入等待模式。它不会释放Lock.class实例上的锁。为什么这样?我一直在想,一旦一个线程进入等待模式或者它死了,它就会释放所有获得的锁。publicclassLock{protectedstaticvolatilebooleanSTOP=true;publicstaticvoidmain(String[]args)throwsInterruptedException{MyThreadmyThre

java - 增加java中单个工作线程的堆栈空间

在我的javaweb应用程序中,我有一个后台工作线程,它需要大量堆栈空间,因为它使用activiti工作流引擎和groovy脚本任务运行一个非常复杂的工作流。目前我需要在64位Java和Tomcat上将JVMXss设置设置为16MB,以规避任何StackOverflowErrors。如果发生错误,堆栈跟踪非常大(几百行长),但它都发生在引擎内部,所以我真的无能为力。现在我的问题是:有没有办法在运行时增加单个线程的堆栈大小?我想将应用程序中所有线程的JVM默认Xss设置降低到512k,我知道这足够了,并且只运行16M的工作线程。JavaAPI为Thread类的构造函数提供了有关此主题的一

java - Jmeter:在发布 JMS 消息时对多个线程使用相同的 ConnectionFactory

我正在使用Jmeter的JMS点对点采样器来测试将大量JMS消息发布到队列时的性能。Jmeter目前为每个线程(根据提供的线程数)创建一个新的QueueConnectionFactory和QueueConnection。我想这不是它通过前端发生的方式,在前端,单个连接工厂处理不同的线程。我们如何确保它只为所有线程创建一个连接?Jmeter中有任何选项吗?还是我们应该修改代码?如果有人能指导我正确的方向,那就太好了。 最佳答案 从2.7版开始,JMeter没有创建一个QueueConnection并跨线程共享它的选项。只有Initia

java - String.intern() 线程安全有保证吗?

是否有任何文件证明String.intern()是线程安全的?javadoc提到了它但没有直接解决它:Returnsacanonicalrepresentationforthestringobject.Apoolofstrings,initiallyempty,ismaintainedprivatelybytheclassString.Whentheinternmethodisinvoked,ifthepoolalreadycontainsastringequaltothisStringobjectasdeterminedbytheequals(Object)method,thenth

Java - 如何使用 SwingWorker 创建多线程游戏

我想用线程创建一个[1人vsPC]游戏。我们的棋盘上有10*10个两种颜色的形状,如下所示:whenthePlayerclicksonBLUECircles,TheircolorturnsintoGray.attheothersidePCshouldturnallREDRectanglesintoGray.theWINNERiswhoClearsallhis/herownShapesEarlier.播放器的代码工作正常,但是,我的问题在于实现游戏的PC端,正如我在此article中所读到的我应该使用SwingWorker在GUI中实现线程。这是我第一次使用SwingWorkers,我不

java - 在 JBoss EAP6 中为异步 session bean 方法创建两个线程池?

在我的应用程序中,我在两个不同的地方对sessionbean使用@Asynchronous业务方法。每个都有自己的逻辑和要求,所以理想情况下我想为每个配置最大线程池大小。看起来JBossEAP6.2.2EAP只允许一个异步线程池。有没有办法创建两个,或者我是否只需要创建一个足以容纳两个的池(并且失去限制任何一个的能力)? 最佳答案 我希望您已经看过关于https://access.redhat.com/documentation/en-US/JBoss_Enterprise_Application_Platform/6.2/pdf/

java - JBOSS:使用 Atomikos 在 Oracle XA 事务上卡住线程

当我打算使用atomikos和hibernate传输一些数据时,我的应用程序一段时间后出现错误。2015-11-0607:11:56,353WARN[http-/0.0.0.0:8083-10]datasource.xa.XAResourceTransaction-XAresource'COTXADBMS':resumeforXID'31302E3235332E312E35322E746D30303030313030303939:31302E3235332E312E35322E746D31'raised-7:theXAresourcehasbecomeunavailable-(Slf4