JStorm源代码阅读——Woker的线程模型

本文详细解析了JStorm中关键线程的运行状态,包括主启动线程、Zookeeper连接状态管理和Netty相关线程的工作原理,深入探讨了线程间的同步与等待机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

启动线程

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值