草庐IT

【JavaEE】线程池

全部标签

java - Java 中的线程组

关闭。这个问题需要debuggingdetails.它目前不接受答案。编辑问题以包含desiredbehavior,aspecificproblemorerror,andtheshortestcodenecessarytoreproducetheproblem.这将有助于其他人回答问题。关闭6年前。Improvethisquestion我目前正在学习Java线程的基础知识,并且正在尝试编写一个简单的线程组程序。我写的和教程网站一样,虽然我得到不同类型的输出。下面是我得到不同输出的代码。publicclassThreadGroupDemoimplementsRunnable{@Overr

java - 如何正确同步两个线程

这是一个我在学校一直听说的问题,但在我被要求面试之前从来没有理由去解决。提示:使用2个线程按顺序打印"Threadi:Thenumberis'j'"其中j=1:100,i是线程号。线程1只能打印奇数j,线程2只能打印偶数j。编辑j的输出必须排序这是我的尝试,但我没有在面试过程中继续前进。我缺少任何基本部分吗?有什么优化吗?importjava.util.concurrent.Semaphore;publicclassThreadSynchronizationimplementsRunnable{privateintstart;privateSemaphoresemaphore;priv

java - 使用可运行的 jar 文件执行时如何解决多线程的 Java 问题?

我开发了一个JavaSwing应用程序,它使用SwingWorker类来执行一些长时间运行的任务。当应用程序从IDE(Netbeans)运行时,我可以毫无问题地同时启动多个长时间运行的任务。我为应用程序创建了一个可运行的jar文件,以便能够从IDE外部运行它。从这个jar文件运行的应用程序运行良好,唯一的异常(exception)是它不允许我同时启动2个长时间运行的任务。任务只是一个接一个地运行。我设法创建了一个非常简单的程序来演示这个问题。link该程序使用一个swingworker,它只是从1循环到100,并将数字写入控制台。这两个按钮启动两个执行相同操作的线程。如果我在netbe

java - 以线程安全的方式发布非线程安全的对象字段

我遇到了Java并发问题。是的,我看过标题几乎完全相同的问题,但它们似乎都在问微妙不同的事情。是的,我读过Java并发实践。是的,我明白为什么它是该主题的事实上的引用。是的,我已经阅读了专门关于在线程安全类中发布字段的部分。是的,我仍然会问一个关于Java的并发问题,尽管我知道有人会简单地指出那本书。虽然这让我感到难过——我知道您可以通过确保具有易变性和/或同步访问的正确读/写顺序,以线程安全的方式轻松发布可rebase元字段,并且64位基元需要由于在其读/写操作中缺乏原子性而具有原子访问。我知道在需要在类字段的特定“快照”上执行的代码块上使用锁。我完全了解带有AtomicLong等好

java - 单 Java 线程运行时的双核 CPU 利用率

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:WouldamultithreadedJavaapplicationexploitamulti-coremachineverywell?我的双核机器(WindowsXP32位环境)上有一个像这样的简单Java线程运行publicstaticvoidmain(String[]strs){longj=0;for(longi=0;i我的期望是它会坚持使用单个CPU来充分利用高速缓存(因为在循环中我们一直使用局部变量j,因此一个CPU利用率将是100%,而另一个几乎是虚度。令我惊讶的是,线程启动后,两个CPU的利用率

java - 记录线程安全(Java + 注释)

我正在尝试更新一个使用依赖注入(inject)的应用程序,在这样做时,我正在尝试使用“线程安全”注释记录每个类(需要它),供其他编码人员和错误检查员使用。如果我有服务类,如下:@ImplementedBy(FooImpl.class)publicinterfaceFooSrvc{}及其相关的实现classFooImplimplementsFooSrvc{}*我是否应该使用线程安全注释来记录或注释接口(interface)和具体实现?只是服务,因为它是公开的,所以只是实现?*例如对于两者:@javax.annotation.concurrent.ThreadSafe@org.checkt

java - 如何在运行时更改特定用户/线程的日志级别

我将slf4j与log4j2.0或logback一起用作实现。例如,我的servlet有一个错误级别的记录器,我的服务器生成了100个servlet线程。我将在运行时获得特殊用户列表。当我检测到一些特殊用户连接时。我想将这些特殊用户/线程的日志级别更改为DEBUG,而其他线程的日志级别不受影响(仍然是ERROR)。我知道logback中的TurboFilter和log4j2.0中的DynamicThresholdFilter,但是由于我只会在运行时获取特殊用户列表,所以我无法使用它们。这是我的申请:packagecom.example.logging;importjava.util.H

java - 将 FlatFileItemReader 与 TaskExecutor 一起使用(线程安全)

有很多使用FlatFileItemReader和TaskExecutor的例子。我在下面提供示例(包括XML和Java配置):UsingOracleCoherencewithSpringBatchSpringBatchMultithreadingExample我自己将它与XML配置一起使用,用于使用开箱即用的JpaItemWriter写入数据库的大型CSV(GB大小)。即使不设置save-state=false或采取任何特殊处理,似乎也没有问题。现在,FlatFileItemReader被记录为不是线程安全的。我的猜测是JpaItemWriter通过持久化Sets来“覆盖”这个问题,即

java - 为什么最后一个线程没有被中断?

我正在尝试演示一种“随时算法”——一种可以随时停止并返回其当前结果的算法。演示算法仅返回i的一些数学函数,其中i是递增的。它检查是否被中断,如果是,则返回当前值:staticintalgorithm(intn){intbestSoFar=0;for(inti=0;i在主程序中,我是这样使用的:Runnabletask=()->{Instantstart=Instant.now();intbestSoFar=algorithm(1000000000);doubledurationInMillis=Duration.between(start,Instant.now()).toMillis

java - 如何为 HTTP servlet 容器选择最大线程数?

我正在开发一个在Jetty中作为servlet(使用阻塞IO)运行的RestfulWeb服务。找出最大线程的最佳设置似乎很难。是否有经过研究的公式来根据设置的其余部分的一些易于测量的特征来确定最大线程数? 最佳答案 非常简单和原始的:max_number_of_threads=number_of_CPUs*C其中C取决于您应用程序的其他因素:-)问自己以下问题:您的应用程序是CPU密集型(较低的C)还是花费大部分时间等待第三方系统(较高的C)?您是否需要更快的响应时间(较低的C),或者即使每个请求需要更长的时间(较高的C)也能够同时