草庐IT

thread-synchronization

全部标签

java - 如何检查线程是否在同步块(synchronized block)或方法内?

我的Java应用程序使用两个线程。从历史上看,有同步方法和专用锁对象在使用中。我需要知道当前线程是否有锁,是通过方法还是通过对象。我该怎么做? 最佳答案 当进入同步方法时,VM会在当前对象上设置一个锁。因此下面的代码具有相同的效果:synchronizedvoidsyncMethod(){//dosomething}voidsyncManually(){synchronized(this){//dosomething}}这意味着同步方法与synchronized(lock){//dosomething}代码中的任何位置。您可以使用T

Exception java.nio.file.InvalidPathException: Illegal char <>> [in thread “Connection worker“]

Gradle构建java项目报错Exceptionjava.nio.file.InvalidPathException:Illegalchar>[inthread"Connectionworker"]检查Idea破解工具自动生成的环境变量,如果可以删除就删除,不可以就删除之后把工具目录都设置为英文重新运行。

Java 线程 : Is it possible view/pause/kill a particular thread from a different java program running on the same JVM?

我有一个运行不同线程的程序“foo”,fooT1、fooT2、..fooTn。现在如果我想写另一个程序“bar”,它可以杀死线程fooTr,这可能吗?原因:线程之一fooTr跟踪产品许可证。如果这个线程被杀死;可以无限期地运行该产品。杀死“foo”本身与“foo”一样是可以容忍的,因为这正是在许可证到期时所做的事情。系统:Linux的Fedora发行版注意:启动JVM和程序foo的命令放在/etc/init.d中,任何对rc.1/rc.2/rc.3结构有一定了解的人都可以更改/添加启动参数到这些。我希望我的问题很清楚。如果没有,我可以随时对其进行编辑。 最佳

java - 在可以避免的情况下需要在迭代时手动同步 Synchronized 列表吗?

我的问题是关于synchronizedList方法集合类。Javadocs说:用户在遍历返回的列表时必须手动同步它:Listlist=Collections.synchronizedList(newArrayList());...synchronized(list){Iteratori=list.iterator();//Mustbeinsynchronizedblockwhile(i.hasNext())foo(i.next());}虽然其他方法不需要手动同步。我查看了Collections类的源代码并且发现同步化已经针对所有方法进行了处理,例如addpublicbooleanadd

java - "inconsistent synchronization"是什么意思?

这是我的Java1.6类:publicclassFoo{privateArrayListnames;publicvoidscan(){if(names==null){synchronized(this){this.names=newArrayList();//fillthearraywithdata}}}}Findbugs说:Inconsistentsynchronizationofcom.XXX.Foo.names;locked40%oftime这是什么意思,我做错了什么?当两个或多个客户端同时调用Foo.scan()时,我试图避免出现问题。 最佳答案

Java Thread Serialization,为什么序列化的Thread Object可以启动

java中的线程在Java中是不能重启的,所以我自己实现了一个javaThread,然后在得到Thread的序列化对象后尝试重启线程。importjava.io.Serializable;publicclassThreadSerializationextendsThreadimplementsSerializable{intiCheck=10;@Overridepublicvoidrun(){System.out.println("STARTING");for(inti=0;i和序列化算法-publicclassCallingThreadSerializable{publicstati

java - "StringBuilders are not thread-safe"是什么意思?

我阅读了一些有关Java编程语言中String和StringBuilder优缺点的文章。在其中一篇文章中,作者提到:StringBuilderisnotThread-safe,soinmultiplethreadsuseStringBuffer.很遗憾,我无法理解这意味着什么。您能否解释一下String、StringBuilder和StringBuffer之间的区别,尤其是在“线程安全”的上下文中。如果您能用代码示例进行描述,我将不胜感激。 最佳答案 如果多个线程正在修改StringBuilder的同一个实例,结果可能会出乎意料-即

Java/ Spring MVC : provide request context to child threads

我有一个问题,我想将我的SpringWebMVC应用程序的一些进程外包到单独的线程中。这很简单并且有效,直到我想使用一个类userRightService,它使用全局请求。这在线程中不可用,我们遇到了一个问题,这很容易理解。这是我的错误:java.lang.RuntimeException:org.springframework.beans.factory.BeanCreationException:Errorcreatingbeanwithname'scopedTarget.userRightsService':Scope'request'isnotactiveforthecurre

java - 同步 : Threads execute two critical sections in same order

我有以下类型的代码:synchronizedblock1{//onlyonethreadintheblock}{lotofcodewheresynchronizationnotnecessary}synchronizedblock2{//onlyonethreadintheblock.//Allthethreadsthatexecutedblock1beforethisthreadshouldhavealreadyexecutedthisblock.}每个线程首先以相同的顺序执行block1、非同步块(synchronizedblock)和block2。如果线程T1在线程T2之前执行b

java - hibernate/Ehcache : evicting collections from 2nd level cache not synchronized with other DB reads

我有一个使用JPA、Hibernate和ehcache的应用程序,以及Spring的声明式交易。数据库上的负载相当高,因此所有内容都被缓存以加快速度,包括Collection品。现在集合被单独缓存已经不是什么secret了来自拥有它们的实体,所以如果我删除一个作为此类元素的实体缓存集合,持久化一个应该是一个元素的实体,或者更新一个实体使得它从一个集合移动到另一个集合,我必须执行驱逐手工制作。所以我使用了一个hibernate事件监听器,它跟踪实体被插入、删除或更新并保存该信息以用于在Spring中注册的事务同步事务管理器采取行动。一旦事务已提交。现在的问题是很多时候,一些其他并发事务设