草庐IT

Tread多线程

全部标签

java - synchronized方法修改后所有java线程都会看到共享资源更新吗?

如果对一对数据结构的所有访问总是包含在锁的获取和释放中(特别是,对数据结构的任何修改使用静态同步方法)。例如:publicstaticsynchronizedItemdoIt(){//removesomethingfromdatastructure1//addtheremoveditemtodatastructure2//returnremoveditem}我知道同步方法一次只会强制一个线程执行更新,但是当一个线程退出该方法时,是否保证其他线程可以看到更新的数据结构,或者我是否仍然需要专门的并发该保证的数据结构?编辑:这是我正在尝试做的一个更好的例子:privatestaticfina

java - 防止 JavaFX 线程死于 JFXPanel Swing 互操作?

我将几个JFXPanels嵌入到Swing应用程序中,当JFXPanels不再可见时,JavaFX线程终止。这是有问题的,因为在JavaFX线程结束后创建另一个JFXPanel将不会启动另一个JavaFX线程,因此JFXPanel将为空白。据我所知,JFXPanelctor通过调用启动JavaFX线程:PlatformImpl.startup(newRunnable(){@Overridepublicvoidrun(){//Noneedtodoanythinghere}});稍后,一旦JFXPanel有一个父组件,它的addNotify方法就会被调用,它会调用registerFinis

java - 如何分别维护每个线程的状态

我有一个字段intx应该可以同时从多个线程访问。我希望x每个线程都有一个单独的副本,每个副本都以其原始值开始。我尝试使用volatile关键字来执行此操作,但每个新线程仍会为其他线程修改x。这是一个代码示例:publicclassStackOverflowThread0{publicStackOverflowThread0(){newA().start();}publicstaticvoidmain(String[]args){newStackOverflowThread0();}volatileintx=0;//输出是:x=1|threadid=10|100*x+x=101x=1|t

java - 在 RxJava 中取消订阅线程安全吗?

假设我有以下RxJava代码(访问数据库,但具体用例无关紧要):publicObservable>getPlaceByStringId(finalListstringIds){returnObservable.create(newObservable.OnSubscribe>(){@Overridepublicvoidcall(Subscriber>subscriber){try{Cursorc=getPlacseDb(stringIds);ListdbPlaceDtoList=newArrayList();while(c.moveToNext()){dbPlaceDtoList.ad

java - 如何使用 JAVA 代码以编程方式捕获线程转储?

我想通过Java代码生成线程转储,我尝试为此使用ThreadMXBean,但我没有获得正确格式的线程转储,因为我们正在使用jstack命令。请任何人提供一些帮助..他们是否有其他获取线程转储的方法...使用任何其他API..我想要的线程转储格式是-2015-08-0605:51:15FullthreaddumpJavaHotSpot(TM)64-BitServerVM(24.51-b03mixedmode):"AttachListener"daemonprio=10tid=0x00007fdab805d800nid=0x7a36waitingoncondition[0x00000000

java - Spock 测试线程安全失败

主题我有一些代码绝对不是线程安全的:publicclassExampleLoader{privateListstrings;protectedListloadStrings(){returnArrays.asList("Hello","World","Sup");}publicListgetStrings(){if(strings==null){strings=loadStrings();}returnstrings;}}同时访问getStrings()的多个线程预计会将strings视为null,因此loadStrings()(这是一项昂贵的操作)被多次触发。问题我想让代码线程安全,

java - Groovy ScriptingEngine 线程安全吗?

当你打电话时:ObjectisThreadSafe=scriptEngine.getFactory().getParameter("THREADING");它按照以下方式返回MULTITHREADED:https://docs.oracle.com/javase/8/docs/api/javax/script/ScriptEngineFactory.html#getParameter-java.lang.String-但目前还不清楚这到底有什么影响。这是否意味着:我可以调用scriptEngine.eval(script,bindings);来自不同线程并且提供的绑定(bind)不共享

java - JAVA StringJoiner 是线程安全的吗?

谁能告诉我StringJoiner是否是线程安全的?我知道StringBuilder和StringBuffer之间的区别,但找不到有关StringJoiner的信息。 最佳答案 不同于StringBuffer同步的方法(如append()),StringJoiner的方法(如add())不是同步。因此它不是thread-safe.源代码来自OpenJDK:StringJoinerStringBuffer 关于java-JAVAStringJoiner是线程安全的吗?,我们在StackOv

java - 如何找出哪个线程在java中锁定文件?

我正在尝试删除我程序中的另一个线程之前处理过的文件。我无法删除该文件,但我不确定如何确定哪个线程可能正在使用该文件。那么我如何找出哪个线程在java中锁定文件? 最佳答案 我没有一个直接的答案(我也不认为有一个,这是在操作系统级别(native)而不是JVM级别控制的)而且我也没有真正看到值(value)答案(一旦发现它是哪个线程,您仍然无法以编程方式关闭文件),但我认为您还不知道无法删除通常是在文件仍处于打开状态时造成的。当您不显式调用Closeable#close()时可能会发生这种情况在InputStream、OutputSt

java - 整个 Xss(堆栈空间)是否用于每个 Java 线程?

我正在考虑增加堆栈大小以解决StackOverflowErrorthrownbytheregexlibrary问题哪个doesnotappeartobeontheplansforafix.编辑:解StephenC'sanswer可能是问题的最佳答案,即使它不是问题的答案。虽然我的字符串大小已经超过4k,但在产品的生命周期内我仍然有可能最终再次遇到问题aioobe'sanswer是实际问题的最佳答案,也许不是实际问题。Chris'sanswer是个好主意。编辑JRegex效果很好! 最佳答案 IstheentireXss(stacks