老师,您看下,这里的守护线程有必要设置吗,还有就是线程池里面呢套线程池这样好吗

来源:14-25 相关内容

奶茶三兄弟d

2020-09-22

具体代码图片,老师您看下
图片描述
这里开启了一个线程池,线程数是通过Runtime获取的。
图片描述
图片描述
这里的话新建了一个线程类,extends Thread。
图片描述
图片描述
这里调用了这个类的初始化方法,设置了这个子线程为守护线程,然后启动了这个线程。这里是具体的Run方法逻辑,
图片描述
图片描述
这里就是for循环,最终往队列里面塞任务,上面那个开启的子线程的run方法就是while条件判断stop!=true或者队列不为空的话,一直执行,不退出!
图片描述
这里依然和上面是一整块逻辑,都是在当前线程池的线程处理的逻辑,除了上面StoreService这个线程类(单独起了一个子线程)

问题?

  1. 老师我感觉这里这个StoreService这个子线程的run方法的逻辑是不断处理当前线程池的这个线程for循环的时候往queue里面放东西,子线程while条件判断,只要队列不为空,就一直处理,不退出,具体逻辑就是上传avro文件到hdfs上,搞不懂他这里为啥要设置成守护线程,感觉没啥用!
  2. 上面的逻辑都是在这个线程池处理的,然后这个方法里面,还有个小方法,就是将数据入库到hbase + solr上,它里面又搞了一个线程池。
  3. 图片描述
    这样线程池里面套线程池,而且还不断开启一个新的子线程去处理异步任务这样是不是性能开销挺大的和内存占用,老师您能给分析吗
写回答

1回答

悟空

2020-09-22

  1. 设置成守护线程,我认为不是必要的。

  2. 线程池套线程池,是可以的,毕竟写入数据库的速度比较慢,开启子线程的开销倒没那么大的。

0
5
奶茶三兄弟d
回复
悟空
好的,知道了,谢谢老师,正好需要这个课程
2020-09-22
共5条回复

线程八大核心+Java并发原理及企业级并发解决方案

完整的并发知识网络+丰富的工作内容分享+50余道并发高频面试题

2512 学习 · 939 问题

查看课程