V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
huxiweng
V2EX  ›  Java

这是死锁?

  •  
  •   huxiweng · 2018-09-26 10:08:45 +08:00 · 2281 次点击
    这是一个创建于 2268 天前的主题,其中的信息可能已经有所发展或是发生改变。
    2018-09-24 11:33:13
    Full thread dump Java HotSpot(TM) 64-Bit Server VM (24.80-b11 mixed mode):

    "OkHttp ConnectionPool" daemon prio=10 tid=0x00007f5b2c199000 nid=0x7ac in Object.wait() [0x00007f5aef6b5000]
    java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0x00000007d70428e0> (a okhttp3.ConnectionPool)
    at java.lang.Object.wait(Object.java:461)
    at okhttp3.ConnectionPool$1.run(ConnectionPool.java:67)
    - locked <0x00000007d70428e0> (a okhttp3.ConnectionPool)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)

    "OkHttp ConnectionPool" daemon prio=10 tid=0x00007f5b2c1ab000 nid=0x7ab in Object.wait() [0x00007f5af27e6000]
    java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0x00000007d7d033e8> (a okhttp3.ConnectionPool)
    at java.lang.Object.wait(Object.java:461)
    at okhttp3.ConnectionPool$1.run(ConnectionPool.java:67)
    - locked <0x00000007d7d033e8> (a okhttp3.ConnectionPool)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)

    "OkHttp ConnectionPool" daemon prio=10 tid=0x00007f5b2c1cf000 nid=0x7aa in Object.wait() [0x00007f5aeeead000]
    java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0x00000007d7d09408> (a okhttp3.ConnectionPool)
    at java.lang.Object.wait(Object.java:461)
    at okhttp3.ConnectionPool$1.run(ConnectionPool.java:67)
    - locked <0x00000007d7d09408> (a okhttp3.ConnectionPool)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)

    "OkHttp ConnectionPool" daemon prio=10 tid=0x00007f5b2c201800 nid=0x7a8 in Object.wait() [0x00007f5af17d6000]
    java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0x000000078cca7d40> (a okhttp3.ConnectionPool)
    at java.lang.Object.wait(Object.java:461)
    at okhttp3.ConnectionPool$1.run(ConnectionPool.java:67)
    - locked <0x000000078cca7d40> (a okhttp3.ConnectionPool)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)

    "Attach Listener" daemon prio=10 tid=0x00007f5b14015000 nid=0x7a7 waiting on condition [0x0000000000000000]
    java.lang.Thread.State: RUNNABLE

    "OkHttp ConnectionPool" daemon prio=10 tid=0x00007f5b2c214800 nid=0x799 in Object.wait() [0x00007f5af1bda000]
    java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0x000000078ccc56c0> (a okhttp3.ConnectionPool)
    at java.lang.Object.wait(Object.java:461)
    at okhttp3.ConnectionPool$1.run(ConnectionPool.java:67)
    - locked <0x000000078ccc56c0> (a okhttp3.ConnectionPool)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)

    "OkHttp ConnectionPool" daemon prio=10 tid=0x00007f5b2c4c1000 nid=0x798 in Object.wait() [0x00007f5aee6a5000]
    java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0x000000078cc738f8> (a okhttp3.ConnectionPool)
    at java.lang.Object.wait(Object.java:461)
    at okhttp3.ConnectionPool$1.run(ConnectionPool.java:67)
    - locked <0x000000078cc738f8> (a okhttp3.ConnectionPool)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)

    "OkHttp ConnectionPool" daemon prio=10 tid=0x00007f5b2c1dc800 nid=0x797 in Object.wait() [0x00007f5af23e2000]
    java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0x000000078cc5fb50> (a okhttp3.ConnectionPool)
    at java.lang.Object.wait(Object.java:461)
    at okhttp3.ConnectionPool$1.run(ConnectionPool.java:67)
    - locked <0x000000078cc5fb50> (a okhttp3.ConnectionPool)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)

    "OkHttp ConnectionPool" daemon prio=10 tid=0x00007f5b2c2fc800 nid=0x795 in Object.wait() [0x00007f5aefbba000]
    java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0x000000078cc1a998> (a okhttp3.ConnectionPool)
    at java.lang.Object.wait(Object.java:461)
    at okhttp3.ConnectionPool$1.run(ConnectionPool.java:67)
    - locked <0x000000078cc1a998> (a okhttp3.ConnectionPool)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)

    "OkHttp ConnectionPool" daemon prio=10 tid=0x00007f5b2c290800 nid=0x793 in Object.wait() [0x00007f5af2eed000]
    java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0x000000078cc37148> (a okhttp3.ConnectionPool)
    at java.lang.Object.wait(Object.java:461)
    at okhttp3.ConnectionPool$1.run(ConnectionPool.java:67)
    - locked <0x000000078cc37148> (a okhttp3.ConnectionPool)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)

    "OkHttp ConnectionPool" daemon prio=10 tid=0x00007f5b2c10c800 nid=0x77e in Object.wait() [0x00007f5af29e8000]
    java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0x000000078cb14928> (a okhttp3.ConnectionPool)
    at java.lang.Object.wait(Object.java:461)
    at okhttp3.ConnectionPool$1.run(ConnectionPool.java:67)
    - locked <0x000000078cb14928> (a okhttp3.ConnectionPool)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)

    "OkHttp ConnectionPool" daemon prio=10 tid=0x00007f5b2c312000 nid=0x779 in Object.wait() [0x00007f5aef5b4000]
    java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0x000000078ca4a588> (a okhttp3.ConnectionPool)
    at java.lang.Object.wait(Object.java:461)
    at okhttp3.ConnectionPool$1.run(ConnectionPool.java:67)
    - locked <0x000000078ca4a588> (a okhttp3.ConnectionPool)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)

    "OkHttp ConnectionPool" daemon prio=10 tid=0x00007f5b2c207800 nid=0x75a in Object.wait() [0x00007f5af13d2000]
    java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0x000000078c86c260> (a okhttp3.ConnectionPool)
    at java.lang.Object.wait(Object.java:461)
    at okhttp3.ConnectionPool$1.run(ConnectionPool.java:67)
    - locked <0x000000078c86c260> (a okhttp3.ConnectionPool)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)

    "OkHttp ConnectionPool" daemon prio=10 tid=0x00007f5b2c35e800 nid=0x758 in Object.wait() [0x00007f5aee4a3000]
    java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0x000000078c873fb8> (a okhttp3.ConnectionPool)
    at java.lang.Object.wait(Object.java:461)
    at okhttp3.ConnectionPool$1.run(ConnectionPool.java:67)
    - locked <0x000000078c873fb8> (a okhttp3.ConnectionPool)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)

    "OkHttp ConnectionPool" daemon prio=10 tid=0x00007f5b2c2b2000 nid=0x754 in Object.wait() [0x00007f5af24e3000]
    java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0x000000078c7db618> (a okhttp3.ConnectionPool)
    at java.lang.Object.wait(Object.java:461)
    at okhttp3.ConnectionPool$1.run(ConnectionPool.java:67)
    - locked <0x000000078c7db618> (a okhttp3.ConnectionPool)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)

    "OkHttp ConnectionPool" daemon prio=10 tid=0x00007f5b2c300000 nid=0x752 in Object.wait() [0x00007f5af35f4000]
    java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0x000000078c7b78c8> (a okhttp3.ConnectionPool)
    at java.lang.Object.wait(Object.java:461)
    at okhttp3.ConnectionPool$1.run(ConnectionPool.java:67)
    - locked <0x000000078c7b78c8> (a okhttp3.ConnectionPool)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)

    "OkHttp ConnectionPool" daemon prio=10 tid=0x00007f5b2c146800 nid=0x74f in Object.wait() [0x00007f5b18a11000]
    java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0x000000078c74a808> (a okhttp3.ConnectionPool)
    at java.lang.Object.wait(Object.java:461)
    at okhttp3.ConnectionPool$1.run(ConnectionPool.java:67)
    - locked <0x000000078c74a808> (a okhttp3.ConnectionPool)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)

    "OkHttp ConnectionPool" daemon prio=10 tid=0x00007f5b2c1a5800 nid=0x746 in Object.wait() [0x00007f5b18d14000]
    java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0x000000078cc47048> (a okhttp3.ConnectionPool)
    at java.lang.Object.wait(Object.java:461)
    at okhttp3.ConnectionPool$1.run(ConnectionPool.java:67)
    - locked <0x000000078cc47048> (a okhttp3.ConnectionPool)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)

    "OkHttp ConnectionPool" daemon prio=10 tid=0x00007f5b2c310800 nid=0x737 in Object.wait() [0x00007f5af3bfa000]
    java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0x000000078c8c5370> (a okhttp3.ConnectionPool)
    at java.lang.Object.wait(Object.java:461)
    at okhttp3.ConnectionPool$1.run(ConnectionPool.java:67)
    - locked <0x000000078c8c5370> (a okhttp3.ConnectionPool)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)

    "OkHttp ConnectionPool" daemon prio=10 tid=0x00007f5b2c154800 nid=0x736 in Object.wait() [0x00007f5b18c13000]
    java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0x000000078c8dccc8> (a okhttp3.ConnectionPool)
    at java.lang.Object.wait(Object.java:461)
    at okhttp3.ConnectionPool$1.run(ConnectionPool.java:67)
    - locked <0x000000078c8dccc8> (a okhttp3.ConnectionPool)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)

    "OkHttp ConnectionPool" daemon prio=10 tid=0x00007f5b2c203000 nid=0x735 in Object.wait() [0x00007f5af2ceb000]
    java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0x000000078c8d5148> (a okhttp3.ConnectionPool)
    at java.lang.Object.wait(Object.java:461)
    at okhttp3.ConnectionPool$1.run(ConnectionPool.java:67)
    - locked <0x000000078c8d5148> (a okhttp3.ConnectionPool)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)
    xixinimei
        1
    xixinimei  
       2018-09-26 13:24:15 +08:00
    这不是死锁,应该是执行 wait 没有被唤醒。
    huxiweng
        2
    huxiweng  
    OP
       2018-09-26 13:33:48 +08:00
    @xixinimei 怎么会 wait 呢,啥事都没做,就用 okhttp 发送 http 请求,怎么这么多 wait 的,TCP 连接数不断上涨,感觉跟这 okhttp 有很大关系。

    代码:

    /**
    * 向指定 URL 发送 POST 方法的请求
    *
    * @param url 发送请求的 URL
    * @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
    * @return 所代表远程资源的响应结果
    */
    public static String sendPostOKHttp(String url, String param) {

    logger.info("sendPostOKHttp()");
    OkHttpClient client = new OkHttpClient();

    // 1.构建 RequestBody
    RequestBody body = RequestBody.create(MediaType.parse("text/xml;charset=UTF-8"),param);

    Request request = new Request.Builder().url(url).post(body).build();
    Response response = null;
    try {
    response = client.newCall(request).execute();
    return response.body().string();
    } catch (IOException e) {
    e.printStackTrace();
    }
    return "";
    }

    /**
    * 处理 http 请求( GET/POST )
    *
    * @param reqUrl 请求地址
    * @param reqMethod 请求方式( GET/POST )
    * @param outputStr 参数( JSON String )
    * @return
    */
    public static String httpReqOKHttp(String reqUrl, String reqMethod, String outputStr) {
    logger.info("httpReqOKHttp()");

    String returnStr = "";

    if ("POST".equalsIgnoreCase(reqMethod)) {
    MediaType JSON = MediaType.get("application/json; charset=utf-8");
    OkHttpClient client = new OkHttpClient();
    RequestBody body = RequestBody.create(JSON, outputStr);
    Request request = new Request.Builder().url(reqUrl).post(body).build();
    Response response = null;
    try {
    response = client.newCall(request).execute();
    returnStr = response.body().string();
    } catch (IOException e) {
    e.printStackTrace();
    logger.error(e.getStackTrace());
    }
    }

    if ("GET".equalsIgnoreCase(reqMethod)) {
    OkHttpClient client = new OkHttpClient();
    Request request = new Request.Builder().url(reqUrl).build();

    Response response = null;
    try {
    response = client.newCall(request).execute();
    returnStr = response.body().string();
    } catch (IOException e) {
    logger.error(e.getStackTrace());
    }
    }
    return returnStr;
    }

    /**
    * 向指定 URL 发送 GET 方法的请求
    *
    * @param url 发送请求的 URL
    * @return URL 所代表远程资源的响应结果
    */
    public static String sendGetOKHttp(String url) {
    logger.info("sendGetOKHttp()");
    OkHttpClient client = new OkHttpClient();
    Request request = new Request.Builder().url(url).build();

    Response response = null;
    try {
    response = client.newCall(request).execute();
    return response.body().string();
    } catch (IOException e) {
    e.printStackTrace();
    }

    return "";
    }
    xixinimei
        3
    xixinimei  
       2018-09-26 13:57:35 +08:00
    wait 的不是你的代码,是 okhttp 的 ConnectionPool,Okhttp 哪个版本?我看的 3.11.0 版本。是清除空闲连接的线程池在跑这段 runnable。每隔 5 分钟(也就是你线程堆栈里的 waitting 状态)执行一次。这个线程池中的线程都是 deamon 的。这个没有什么问题,不用关心。
    xixinimei
        4
    xixinimei  
       2018-09-26 14:01:59 +08:00
    有问题的是你的 OkHttpClient 实例创建太多,导致有很多线程池。。。。
    huxiweng
        5
    huxiweng  
    OP
       2018-09-26 15:16:10 +08:00
    @xixinimei

    okhttp-3.11.0.jar 应该是 3.11.0 版本

    3 楼你说的我有点晕,意思是 jstack 打印的内容里的:
    "OkHttp ConnectionPool" daemon prio=10 tid=0x00007f5b2c300000 nid=0x752 in Object.wait() [0x00007f5af35f4000]
    java.lang.Thread.State: TIMED_WAITING (on object monitor)
    是没有问题的是吗?可以不用管?

    然后是我自己写的方法,调用一次 sendPostOKHttp()方法就创建一个 OkHttpClient,然后由于 OkHttpClient 对象太多,就有 N 个线程(还是线程池)?这样理解对吗?

    *****

    所以我的代码要改一下:
    把 OkHttpClient client = new OkHttpClient();定义到类成员变量,然后每次使用这个对象调用剩下的代码?
    这样理解对吗?
    xixinimei
        6
    xixinimei  
       2018-09-26 15:24:35 +08:00   ❤️ 1
    OkHttpClient 所在类也是单实例的,就可以定义成其成员变量。
    建议参考 OkHttpClient 文档,写得非常清楚。OkHttpClient 对象应该是单例的,原因就是每个 OkHttpClient 都有自己的 connection pool 和 thread pool
    huxiweng
        7
    huxiweng  
    OP
       2018-09-27 09:50:57 +08:00
    @xixinimei

    改成下面单例,好像死锁了。。。


    private static OkHttpClient okHttpClient = null;


    private HttpTool() {
    }

    public static OkHttpClient getInstance() {
    if (okHttpClient == null) {
    //加同步安全
    synchronized (HttpTool.class) {
    if (okHttpClient == null) {
    //判空 为空创建实例
    okHttpClient = new OkHttpClient();
    }
    }

    }

    return okHttpClient;
    }


    jstack 日志:
    2018-09-27 08:01:43
    Full thread dump Java HotSpot(TM) 64-Bit Server VM (24.80-b11 mixed mode):

    "Attach Listener" daemon prio=10 tid=0x00007f5d1c001000 nid=0x11ba runnable [0x0000000000000000]
    java.lang.Thread.State: RUNNABLE

    "Okio Watchdog" daemon prio=10 tid=0x00007f5d14924800 nid=0x117c in Object.wait() [0x00007f5d20e12000]
    java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0x00000007889c4fd8> (a java.lang.Class for okio.AsyncTimeout)
    at okio.AsyncTimeout$Companion.awaitTimeout$jvm(AsyncTimeout.kt:341)
    at okio.AsyncTimeout$Watchdog.run(AsyncTimeout.kt:228)
    - locked <0x00000007889c4fd8> (a java.lang.Class for okio.AsyncTimeout)

    "Java2D Disposer" daemon prio=10 tid=0x00007f5d1491e800 nid=0x110d in Object.wait() [0x00007f5d20131000]
    java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0x0000000788ba7c48> (a java.lang.ref.ReferenceQueue$Lock)
    at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:135)
    - locked <0x0000000788ba7c48> (a java.lang.ref.ReferenceQueue$Lock)
    at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:151)
    at sun.java2d.Disposer.run(Disposer.java:145)
    at java.lang.Thread.run(Thread.java:745)

    "New I/O worker #8" prio=10 tid=0x00007f5d0c014000 nid=0x110c runnable [0x00007f5d2070b000]
    java.lang.Thread.State: RUNNABLE
    at sun.nio.ch.EPollArrayWrapper.epollWait(Native Method)
    at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:269)
    at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:79)
    at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:87)
    - locked <0x00000007fbf15d98> (a sun.nio.ch.Util$2)
    - locked <0x00000007fbf15d88> (a java.util.Collections$UnmodifiableSet)
    - locked <0x00000007fbf02948> (a sun.nio.ch.EPollSelectorImpl)
    at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:98)
    at org.jboss.netty.channel.socket.nio.SelectorUtil.select(SelectorUtil.java:52)
    at org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:208)
    at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:38)
    at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:102)
    at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)

    "New I/O worker #7" prio=10 tid=0x00007f5d0c011800 nid=0x110b runnable [0x00007f5d2080c000]
    java.lang.Thread.State: RUNNABLE
    at sun.nio.ch.EPollArrayWrapper.epollWait(Native Method)
    at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:269)
    at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:79)
    at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:87)
    - locked <0x000000078859c718> (a sun.nio.ch.Util$2)
    - locked <0x000000078859c708> (a java.util.Collections$UnmodifiableSet)
    - locked <0x000000078855fb30> (a sun.nio.ch.EPollSelectorImpl)
    at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:98)
    at org.jboss.netty.channel.socket.nio.SelectorUtil.select(SelectorUtil.java:52)
    at org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:208)
    at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:38)
    at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:102)
    at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)

    "New I/O worker #6" prio=10 tid=0x00007f5d0c010000 nid=0x110a runnable [0x00007f5d2090d000]
    java.lang.Thread.State: RUNNABLE
    at sun.nio.ch.EPollArrayWrapper.epollWait(Native Method)
    at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:269)
    at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:79)
    at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:87)
    - locked <0x00000007fbf0fe28> (a sun.nio.ch.Util$2)
    - locked <0x00000007fbf0fe18> (a java.util.Collections$UnmodifiableSet)
    - locked <0x00000007fbf0d818> (a sun.nio.ch.EPollSelectorImpl)
    at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:98)
    at org.jboss.netty.channel.socket.nio.SelectorUtil.select(SelectorUtil.java:52)
    at org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:208)
    at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:38)
    at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:102)
    at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)

    "New I/O worker #5" prio=10 tid=0x00007f5d0c003800 nid=0x1109 runnable [0x00007f5d20a0e000]
    java.lang.Thread.State: RUNNABLE
    at sun.nio.ch.EPollArrayWrapper.epollWait(Native Method)
    at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:269)
    at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:79)
    at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:87)
    - locked <0x00000007885c1230> (a sun.nio.ch.Util$2)
    - locked <0x00000007885c1220> (a java.util.Collections$UnmodifiableSet)
    - locked <0x00000007885b1078> (a sun.nio.ch.EPollSelectorImpl)
    at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:98)
    at org.jboss.netty.channel.socket.nio.SelectorUtil.select(SelectorUtil.java:52)
    at org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:208)
    at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:38)
    at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:102)
    at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2620 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 14:46 · PVG 22:46 · LAX 06:46 · JFK 09:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.