草庐IT

Multithreading

全部标签

java - 多次执行SwingWorker

我希望能够多次使用SwingWorker子类。这可能吗?我已经阅读了java文档:SwingWorkerisonlydesignedtobeexecutedonce.ExecutingaSwingWorkermorethanoncewillnotresultininvokingthedoInBackgroundmethodtwice. 最佳答案 实现SwingWorker的类的一个实例确实只能运行一次。根据需要实例化并运行它们没有任何限制。 关于java-多次执行SwingWorker,

java - 减少有许多 hibernate 线程时使用的操作系统线程数

我有一个有数百个线程的系统。大多数线程在给定时间内处于hibernate或等待状态,但它们可以随时唤醒。我想减少专用于我的系统的操作系统线程数。你知道一个简单的方法吗?例如,是否有一个线程池包,每当线程进入休眠模式时,它都会存储状态并杀死线程。每当它醒来时,它都会以旧线程的状态启动新线程。谢谢 最佳答案 你在找类似ThreadPoolExecutor的东西吗??AnExecutorServicethatexecuteseachsubmittedtaskusingoneofpossiblyseveralpooledthreads,no

java - 在 Tomcat 下启动线程

这个问题在这里已经有了答案:Howtorunabackgroundtaskinaservletbasedwebapplication?(5个答案)关闭7年前。有人告诉我,你不应该从运行在Tomcat(或任何其他容器,大概)下的webapp启动你自己的线程RunnablemyRunnable=newRunnable(){publicvoidrun(){System.out.println("I'mrunning");}}newThread(myRunnable).start();或者类似的:ScheduledThreadPoolExecutorretrySchedulerService=

java - 为什么在 Joshua Bloch Effective Java Example 中双重检查锁定快 25%

下面是EffectiveJava第二版的一个片段。作者声称以下代码比不使用result变量的代码快25%。根据这本书“这个变量的作用是确保该字段在已经初始化的常见情况下只被读取一次。”.我无法理解为什么与不使用局部变量result相比,初始化值后这段代码会更快。在任何一种情况下,无论您是否使用局部变量result,您在初始化后都将只有一次volatile读取。//Double-checkidiomforlazyinitializationofinstancefieldsprivatevolatileFieldTypefield;FieldTypegetField(){FieldType

java - RxJava 线程安全

这段代码是线程安全的吗?Observableobservable=...//someobservablethatcalls//onNextfromabackgroundthreadobservable.scan(newArrayList(),(Listacc,Stringnext)->{acc.add(next);returnacc;}).subscribe(list->{//dosomethindwithsequenceoflists...});我很好奇,因为ArrayList不是线程安全的数据结构。 最佳答案 作为快速回答,在.

java - java.lang.Class 方法线程安全吗?

在IBMJVM下,当多个线程试图同时对不同的对象(但使用相同的注解)调用Class.getAnnotation时,我们遇到了一个问题。线程开始死锁等待Hashtable内的监视器,Hashtable用作IBMJVM中注释的缓存。最奇怪的是,持有此监视器的线程在Hashtable.get中被置于“等待条件”状态,使所有其他线程无限期地等待。IBM的支持表明,Class.getAnnotation的实现不是线程安全的。与其他JVM实现(例如OpenJDK)相比,我们看到它们以线程安全的方式实现类方法。IBMJVM是一个闭源的JVM,他们确实将一些源代码与他们的JVM一起发布,但是对于他们的

java - 如果 wait() 抛出 InterruptedException,线程是否等待直到它获取对象的监视器?

例如:publicsynchronizedObjectget(){while(result==null){try{wait();}catch(InterruptedExceptione){e.printStackTrace();//Doweownthemonitorofthisobject?}}returnresult;}当e.printStackTrace()执行时,我们是否保证拥有对象的监视器?引用资料说,当wait()在notify()或notifyAll()调用后返回时,线程会等待直到它获得对象的监视器。但是如果wait()抛出异常呢? 最佳答案

java - 并行化 REST 调用的最佳方式是什么?

我正在处理一些处理多个REST调用的java代码call1()call2()call3()...我想并行执行这些调用,但同步执行我的主要代码。我用lamba和并行流制作了一个POC:Listlist=newArrayList();list.add(()->{call1()});list.add(()->{call2()});list.add(()->{call3()});list.add(...);list.parallelStream().forEach(Runnable::run);您有其他解决方案吗?我还检查了使用来自Jersey客户端的异步调用,但这需要更多代码更改。

java - 请解释 Thread run() 和 start() 方法的输出

请解释以下代码的输出:如果我调用th1.run(),输出是:EXTENDSRUN>>RUNNABLERUN>>如果我调用th1.start(),输出是:RUNNABLERUN>>EXTENDSRUN>>为什么会出现这种不一致?请解释。classThreadExampleextendsThread{publicvoidrun(){System.out.println("EXTENDSRUN>>");}}classThreadExampleRunnableimplementsRunnable{publicvoidrun(){System.out.println("RUNNABLERUN>>

java - 如果不会发生争用,读取时是否需要同步

考虑下面的代码狙击手:packagesync;publicclassLockQuestion{privateStringmutable;publicsynchronizedvoidsetMutable(Stringmutable){this.mutable=mutable;}publicStringgetMutable(){returnmutable;}}在时间Time1线程Thread1将更新“可变”变量。setter中需要同步,以便将内存从本地缓存刷新到主内存。在时间Time2(Time2>Time1,无线程争用)线程Thread2将读取可变值。问题是——我需要把synchroni