草庐IT

Tread多线程

全部标签

java - 毕竟 log4j 不是线程安全的吗?

(这是在SLES11、Java7、Tomcat6、log4j-1.2.16上)我们使用log4j将不同的内容写入不同的日志文件。我继承了这段代码,所以无论好坏,通用结构都暂时保留在这里。记录器将创建两个日志文件:main.log和stats.log。特定的统计消息通过单独的调用记录到两个记录器(您将在下面看到),并且一大堆其他内容记录到主日志。因此,在我们的所有代码中,您会看到类似Log.logMain(someMessageToLog);的内容。在我们的代码(由多个线程执行)的一个地方有以下内容:StringstatsMessage=createStatsMessage();Log.

java - Servlet : Singleton, 单线程或多实例多线程

这个问题之前有人问过,也讨论过,但我想再问一下。Servlet是否是单例?根据我的说法,它们仅由容器初始化,但它们仍然不是单例??为什么??Servlets是单线程还是多线程(忘记javax.servlet.SingleThreadModel类)即当对单个servlet有多个请求时会发生什么?如果它们同时执行,那就意味着它是多线程的??如果它是多线程的,那么每个线程都会有一个servlet实例,这与第一点矛盾!!我认为,每当有新请求时,容器都会为传入的请求创建一个新线程,比如Req1,因为它会调用或分派(dispatch)控件到servlet的服务方法。现在这个执行是同时发生的……我猜

java - 如何调度 Java 线程

我读到Java线程是用户级线程,用户级线程和内核级线程之间的区别之一是内核级线程由内核调度(我们无法更改它),而对于用户级线程,我们可以定义自己的调度算法。那么我们如何在Java中调度线程呢?在任何给定时间,当多个线程准备好执行时,运行时系统会选择具有最高优先级的Runnable线程执行。如果两个优先级相同的线程正在等待CPU,调度程序会选择其中一个以循环方式运行。如果我不想要RR怎么办?有什么办法可以改变它,还是我在这里遗漏了什么? 最佳答案 您不能更改JVM的调度算法,这超出了范围。JVM使用底层操作系统提供的用户线程的线程。因

java - 什么时候/为什么我应该在 Java 中使用多线程?

关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭9年前。Improvethisquestion我不知道什么时候应该在Java开发中使用多线程,以及使用它的逻辑/原因。它在不同情况下有何帮助?场景一我正在制作一个带有敌人的2D滚动游戏等等,想想金属弹头场景2我正在制作一个数据库守护进程来检查多个数据库内容。场景3我正在为JSP制作一个servlet,其中包含从数据库中获取的一些信息。请随意编辑场景以使其变得更好。另外:我应该为游戏服务器使用多线程吗?或者我不应该?

java - 似乎在等待的线程的高 CPU 使用率

我目前正在运行一些JMeter测试来测试Web服务的性能。它使用了大量的CPU。对于一个JMeter请求线程,它使用10-30%(取决于请求类型)。当我将其增加到仅15个线程时,我的CPU利用率约为95%。自然,我想弄清楚发生了什么。我做了一个HprofCPU示例(我尝试了times选项,但需要一个半小时才能启动我的服务,并且没有消息会通过)。以下是该采样的结果片段(超过15分钟)。CPUSAMPLESBEGIN(total=220846)FriAug2213:38:542014rankselfaccumcounttracemethod114.96%14.96%33038300514j

java - 在 Java 中使用 10 个线程打印 1 到 100

我是多线程的新手,我遇到了一个问题,要在Java中使用10个线程打印1到100,并具有以下约束。线程t1应该打印:1,11,21,31,...91t2应该打印:2,12,22,32,...92同样t10应该打印:10,20,30,...100最终输出应该是123..100我试过了,但它在所有10个线程中都抛出了以下异常:java.lang.IllegalMonitorStateExceptionatjava.lang.Object.wait(NativeMethod)atjava.lang.Object.wait(Object.java:485)atthread.run(MyThrea

java - 绑定(bind) StringProperty 时出现多线程错误

我有一个关于多线程和StringProperty绑定(bind)的问题。我有一个CacheManager类,它包含一个Thread,它使用服务器上的更改更新我的缓存。现在,我想用文本和进度百分比通知用户(在JavaFX中是Label和ProgressBar)。为此,我使用publicstaticDoubleProperty和StringProperty,它们在CacheManager类中定义。我只是像这样绑定(bind)它:progressBar.progressProperty().bind(CacheManager.progress);someLabel.textProperty(

java - 两个线程在同一个监视器上等待可以称为死锁吗?

两个线程在同一个监视器上等待,例如,如果一个线程在“锁定”上调用等待,而另一个获得监视器的线程也在通知第一个线程之前调用等待。现在两个线程都在等待,但没有人收到通知。我怎么称呼这种情况?这能叫死锁吗?编辑:假设只有这两个线程,并且无法从其他地方通知它们。更新:我刚刚创建了我所描述的情况。当更改器线程在监听器线程之前启动时,以下代码在大多数情况下都可以正常工作。但是,当我在changer之前启动listener时,程序在打印两行后挂起(一行来自changer,另一行来自listener线程)。我在changer之前调用listener的情况会被称为死锁吗?packagedemo;publ

java - REST Controller 是多线程的吗?

我一直在这样做tutorial关于如何返回异步可调用对象。它按预期工作。但是当第一个请求hibernate5秒时我收到第二个请求,Controller等待在处理第二个请求之前完成前一个请求。如何让Controller立即处理每个请求并在后台hibernate?@编辑例子:想象一种情况,我的Controller需要向外部api发出请求,并根据其响应发送自己的响应。外部api调用需要2秒。我希望我的应用程序的用户只等待2.5秒,而不是被放入队列,因为Controller一次只能处理一个请求。 最佳答案 IsRESTcontrollerm

java - 使用多线程并行化 Java 中的 for 循环

我是java的新手,我想使用执行程序服务或使用java中的任何其他方法并行化嵌套的for循环。我想创建一些固定数量的线程,这样CPU就不会完全被线程占用。for(SellerNamessellerNames:sellerDataList){for(StringselleName:sellerNames){//getSellerAddress(sellerName)//parallizethistask}}sellerDataList的大小=1000,sellerNames的大小=5000。现在我想创建10个线程并将相同的任务分配给每个线程。这是针对第i个sellerDataList,第