1. 程式人生 > >JStorm原始碼閱讀——Woker的執行緒模型

JStorm原始碼閱讀——Woker的執行緒模型

啟動執行緒

"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。