JStorm原始碼閱讀——Woker的執行緒模型
阿新 • • 發佈:2018-12-13
啟動執行緒
"main" #1 prio=5 os_prio=0 tid=0x00007fedd400a000 nid=0x7acf in Object.wait() [0x00007fedddcbc000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000000c01730b0> (a java.lang.Thread)
at java.lang.Thread.join(Thread.java:1249)
- locked <0x00000000c01730b0> ( a java.lang.Thread)
at java.lang.Thread.join(Thread.java:1323)
at com.alibaba.jstorm.callback.AsyncLoopThread.join(AsyncLoopThread.java:97)
at com.alibaba.jstorm.task.TaskShutdownDameon.join(TaskShutdownDameon.java:116)
at com.alibaba.jstorm.daemon.worker.WorkerShutdown.join(WorkerShutdown.java: 160)
at com.alibaba.jstorm.daemon.worker.Worker.main(Worker.java:441)
Woker Main方法的執行緒。是Worker的啟動執行緒,阻塞位置為
WorkerShutdown sd = mk_worker(conf, null, topology_id, supervisor_id, Integer.parseInt(port_str), worker_id, jar_path);
sd.join();//等待sd中的所有執行緒結束,結束後worker將被關閉
ZK相關
"ConnectionStateManager-0" #17 daemon prio=5 os_prio=0 tid=0x00007fedd43f1800 nid=0x7aee waiting on condition [0x00007fed94f75000]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000000c032e688> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
at java.util.concurrent.ArrayBlockingQueue.take(ArrayBlockingQueue.java:403)
at shade.storm.org.apache.curator.framework.state.ConnectionStateManager.processEvents(ConnectionStateManager.java:208)
at shade.storm.org.apache.curator.framework.state.ConnectionStateManager.access$000(ConnectionStateManager.java:42)
at shade.storm.org.apache.curator.framework.state.ConnectionStateManager$1.call(ConnectionStateManager.java:110)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Netty相關
包括一個server-boss,和若干個server-worker。