问题标签 [blocked-threads]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3730 浏览

java - Java中的println语句阻塞的线程

我们在单个物理主机上运行多个应用程序实例(每个 tomcat 服务器一个)。应用程序做体面的日志记录。最近我们观察到一些应用程序变慢或挂起,需要重新启动。在线程转储中,发现所有线程在日志语句上都被 BLOCKED,等待锁定println对象。和其他一些对象已经锁定println。但我不明白为什么其他线程没有释放println对象上的锁?我粘贴了一些线程转储快照:

阻塞的线程转储:

记录 println 的线程的线程转储。

0 投票
1 回答
558 浏览

multithreading - netty 4.0.15 线程被阻塞

谁能帮我理解netty4.0.15中的以下线程块

阻塞的线程我从 yourkit profiler 中获取

0 投票
0 回答
1036 浏览

java - 大多数 Jboss 线程处于状态 = BLOCKED

我们的大多数 jboss 线程都处于 BLOCKED 状态,并且 jboss 的线程数永远不会下降。

想了解如何减少线程计数以及为什么这么多线程处于 BLOCKED 状态。

我们有 450 个线程中的 380 个处于 BLOCKED 状态。

使用下面的来找出状态

0 投票
2 回答
15946 浏览

process - Blocked 和 Busy Waiting 有什么不同?

我知道 Busy Waiting 的实现。这是一个这样的死循环:

所以,“next()”方法看起来就像被阻塞了,实际上它一直在运行。这在书上被称为“忙着等待”。

什么是“进程被阻止”?它的实施细节如何?也是死循环吗?还是其他一些?像信号机制?

例如:猫 xxx | grep "abc"

进程“cat”读取文件并输出它们。

进程“grep”等待来自“cat”的输入。

所以在“cat”输出数据之前,“grep”应该被阻塞,等待输入并继续。关于这个“阻塞”的死亡循环一直在读取输入流的详细信息是什么?还是真的停止运行,等待信号唤醒它运行?

0 投票
2 回答
100 浏览

multithreading - 被阻塞的线程是否会导致进程被阻塞?为什么和如何?

被阻塞的线程是否会导致进程被阻塞?为什么和如何?感谢所有专家的解答。

0 投票
2 回答
994 浏览

java - 像 read() 这样的 I/O 方法如何在 java 中将线程置于阻塞状态?

所以,如果我理解正确的话,当我们在一个对象上调用 wait 时,一个线程进入等待状态,当它等待一个对象上的锁时它进入阻塞状态(比如尝试进入同步块或方法时) )。

像 read() 这样的 I/O 方法是如何将线程置于阻塞状态的呢?我理解为什么它必须处于阻塞状态,等待它可以读取的数据,但我也对 HOW 感兴趣。当试图读取的资源中的数据再次可用时,JVM 如何通知线程它可以继续?

0 投票
1 回答
4914 浏览

mysql - Magento SQLSTATE [HY000]:一般错误:1205 超过锁定等待超时;尝试重启事务

我最近制作了一个大型 32Gig 数据库的副本,用于我的开发环境。现在,当我尝试创建、删除、更新项目时出现此错误。

SQLSTATE[HY000]: General error: 1205 Lock wait timeout exceeded; try restarting transaction

我在想也许副本没有正确运行并且某些表被锁定?

有问题的数据库是test_dev2我的开发环境正在使用的数据库。我尝试终止该进程test_dev2,但仍然出现同样的错误。

在此处输入图像描述

我还重新启动了 MySQL 服务,但仍然出现同样的错误。

然后我增加到innodb_lock_wait_timeout120 +--------------------------+-------+ | Variable_name | Value | +--------------------------+-------+ | innodb_lock_wait_timeout | 120 | +--------------------------+-------+

这是我运行此命令时得到的结果SHOW OPEN TABLES WHERE In_use > 0; +-----------+------------------+--------+-------------+ | Database | Table | In_use | Name_locked | +-----------+------------------+--------+-------------+ | test_dev2 | core_url_rewrite | 1 | 0 | +-----------+------------------+--------+-------------+

关于如何解决此1205 Lock wait timeout exceeded错误的任何想法?

0 投票
0 回答
328 浏览

java - JDBC4Connection 和 Log4J 上的阻塞线程

我面临 tomcat7 的高 CPU 利用率问题。使用JDK7开发的Web应用程序部署在tomcat服务器上。此 Web 应用程序联系在不同实例上运行的 MySQL 服务器以获取 CRUD 功能。

一周一次tomcat的CPU占用率异常高。为了分析它,我进行了线程转储,发现是一些阻塞的线程。

大多数被阻塞的线程都有以下堆栈跟踪,

ajp-bio-8009-exec-20604 - priority:10 - threadId:0x0000000001aac000 - nativeId:0x4143 - state:BLOCKED stackTrace: java.lang.Thread.State: BLOCKED (on object monitor) at org.apache.log4j.Category。 callAppenders(Category.java:204) - 等待在 org.apache.log4j.Category.forcedLog(Category.java:391) 在 org.apache.log4j.Category 锁定 <0x000000008bf42fc8> (一个 org.apache.log4j.Logger) .log(Category.java:838) 在 com.myUtil.filter.XSSFilter.doFilter(XSSFilter.java:37) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 在 org.apache。 catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) 在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) 在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) 在 org.apache.catalina.valves.AccessLogValve 的 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) .invoke(AccessLogValve.java:936) 在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 在 org. org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) 在 org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor 的 apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:200)。 run(JioEndpoint.java:310) - 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 在 java.lang.Thread.run(Thread.java:744) 锁定的可拥有同步器: - <0x00000000db84e190>(一个 java.util. concurrent.ThreadPoolExecutor$Worker)

还有另一个与 JDBC 连接相关的堆栈跟踪,

ajp-bio-8009-exec-20585 - priority:10 - threadId:0x000000000190f000 - nativeId:0x40d6 - state:BLOCKED stackTrace: java.lang.Thread.State: BLOCKED (on object monitor) at com.mysql.jdbc.JDBC4Connection。 isValid(JDBC4Connection.java:93) - 等待在 com.myUtil.dbconnection.DBAccessObject.IsConnected(DBAccessObject.java:751) 在 com.myUtil.dbhandler.MyDBHandler 处锁定 <0x000000008bdf9890> (a com.mysql.jdbc.JDBC4Connection) .InitOrGetConnection(MyDBHandler.java:119) 在 com.myUtil.util.ProcessRequest.myPost(ProcessRequest.java:1539) 在 com.myUtil.dbhandler.MyDBHandler.GetNotification(MyDBHandler.java:8585) 在 com.myUtil.util。 ProcessRequest.doPost(ProcessRequest.java:104) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:647) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 在 org.apache.catalina .core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at com.myUtil.filter.XSSFilter.doFilter(XSSFilter.java:58) at org .apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve .java:222) 在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) 的 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)。 Valves.ErrorReportValve.invoke(ErrorReportValve.java:99) 在 org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) at org.apache.coyote.ajp .AjpProcessor.process(AjpProcessor.java:200) 在 org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) 在 org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java :310) - 在 java.util.concurrent.ThreadPoolExecutor$Worker 的 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 锁定 <0x00000000db7c38f8> (一个 org.apache.tomcat.util.net.SocketWrapper)。在 java.lang.Thread.run(Thread.java:744) 处运行 (ThreadPoolExecutor.java:615) 锁定的可拥有同步器:- <0x00000000db7c3940> (a java.util.concurrent.ThreadPoolExecutor$Worker)936)在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)在 org.apache.coyote.ajp.AjpProcessor .process(AjpProcessor.java:200) 在 org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) 在 org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) ) - 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run( ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:744) 锁定的可拥有同步器:- <0x00000000db7c3940> (a java.util.concurrent.ThreadPoolExecutor$Worker)936)在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)在 org.apache.coyote.ajp.AjpProcessor .process(AjpProcessor.java:200) 在 org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) 在 org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) ) - 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run( ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:744) 锁定的可拥有同步器:- <0x00000000db7c3940> (a java.util.concurrent.ThreadPoolExecutor$Worker)apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 在 org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor. java:200) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) - 锁定 <0x00000000db7c38f8 >(org.apache.tomcat.util.net.SocketWrapper)在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615 ) 在 java.lang.Thread.run(Thread.java:744) 锁定的可拥有同步器:- <0x00000000db7c3940> (a java.util.concurrent.ThreadPoolExecutor$Worker)apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 在 org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor. java:200) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) - 锁定 <0x00000000db7c38f8 >(org.apache.tomcat.util.net.SocketWrapper)在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615 ) 在 java.lang.Thread.run(Thread.java:744) 锁定的可拥有同步器:- <0x00000000db7c3940> (a java.util.concurrent.ThreadPoolExecutor$Worker)StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:200) at org .apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) 在 org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) - 锁定 <0x00000000db7c38f8> (一个 org.apache .tomcat.util.net.SocketWrapper) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 在 java.lang。 Thread.run(Thread.java:744) 锁定的可拥有同步器:- <0x00000000db7c3940> (a java.util.concurrent.ThreadPoolExecutor$Worker)StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:200) at org .apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) 在 org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) - 锁定 <0x00000000db7c38f8> (一个 org.apache .tomcat.util.net.SocketWrapper) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 在 java.lang。 Thread.run(Thread.java:744) 锁定的可拥有同步器:- <0x00000000db7c3940> (a java.util.concurrent.ThreadPoolExecutor$Worker)118) 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 在 org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:200) 在 org.apache.coyote.AbstractProtocol$AbstractConnectionHandler org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) 处的 .process(AbstractProtocol.java:589) - 锁定 <0x00000000db7c38f8> (一个 org.apache.tomcat.util.net.SocketWrapper ) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 在 java.lang.Thread.run(Thread.java: 744)锁定的可拥有同步器:-<0x00000000db7c3940>(java.util.concurrent.ThreadPoolExecutor$Worker)118) 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 在 org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:200) 在 org.apache.coyote.AbstractProtocol$AbstractConnectionHandler org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) 处的 .process(AbstractProtocol.java:589) - 锁定 <0x00000000db7c38f8> (一个 org.apache.tomcat.util.net.SocketWrapper ) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 在 java.lang.Thread.run(Thread.java: 744)锁定的可拥有同步器:-<0x00000000db7c3940>(java.util.concurrent.ThreadPoolExecutor$Worker)coyote.ajp.AjpProcessor.process(AjpProcessor.java:200) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run( JioEndpoint.java:310) - 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 在 java.util.concurrent.ThreadPoolExecutor 锁定 <0x00000000db7c38f8> (一个 org.apache.tomcat.util.net.SocketWrapper) $Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:744) 锁定的可拥有同步器:- <0x00000000db7c3940> (a java.util.concurrent.ThreadPoolExecutor$Worker)coyote.ajp.AjpProcessor.process(AjpProcessor.java:200) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run( JioEndpoint.java:310) - 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 在 java.util.concurrent.ThreadPoolExecutor 锁定 <0x00000000db7c38f8> (一个 org.apache.tomcat.util.net.SocketWrapper) $Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:744) 锁定的可拥有同步器:- <0x00000000db7c3940> (a java.util.concurrent.ThreadPoolExecutor$Worker)JioEndpoint$SocketProcessor.run(JIoEndpoint.java:310) - 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 处锁定 <0x00000000db7c38f8> (一个 org.apache.tomcat.util.net.SocketWrapper) 在 java .util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:744) 锁定的可拥有同步器:- <0x00000000db7c3940> (a java.util.concurrent.ThreadPoolExecutor$工人)JioEndpoint$SocketProcessor.run(JIoEndpoint.java:310) - 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 处锁定 <0x00000000db7c38f8> (一个 org.apache.tomcat.util.net.SocketWrapper) 在 java .util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:744) 锁定的可拥有同步器:- <0x00000000db7c3940> (a java.util.concurrent.ThreadPoolExecutor$工人)0x00000000db7c3940>(一个 java.util.concurrent.ThreadPoolExecutor$Worker)0x00000000db7c3940>(一个 java.util.concurrent.ThreadPoolExecutor$Worker)

我检查了 MySQL 服务器的状态。但是那里的一切(连接数/线程数)都很正常。

此应用程序在过去 4 年中运行良好。仅在过去的 3 个月里,我才面临这个问题。并且没有对服务器代码进行任何更改。每次发生此问题时,我都必须重新启动服务器。

如何找到此问题的根本原因并永久解决此问题?

0 投票
1 回答
88 浏览

android - WAIT_BLOCKED 线程状态是什么意思?

我正在分析 AudioTrack 线程的 lttng 跟踪,所以在出现故障时它显示线程状态为WAIT_BLOCKED. 谁能告诉线程状态是什么意思WAIT_BLOCKED。这是屏幕截图

0 投票
1 回答
835 浏览

java - 如何将线程从阻塞状态恢复为可运行状态?

语境:

我正在编写一个小型 Java 程序来欺骗我的朋友。该程序在运行时会在屏幕上显示许多小窗口,以阻止视图并延迟机器。为了提高窗口出现的速度,我尝试创建多个线程,每个线程都会在屏幕上发送垃圾邮件。

问题和问题:

当我得到每个线程的状态时,只有一个是可运行的,其余的都是阻塞的,导致窗口垃圾邮件率没有增加。如何防止这些线程被阻塞?


-代码-


主类- 创建线程并在 1 秒后打印它们的状态

线程状态输出


垃圾邮件类- 无限创建新窗口并将它们放置在屏幕上的随机位置


Thread 类- 每个实例实例化一个 Spam 类