线程池开关与搭建的那些事
博主今天在练习的时候遇到了一个问题:
自己搭建的线程池在运行到 join 阻塞方法中就卡着不动了,而在这之前的代码都可以运行成功。如图:
文章图片
要说如果报了个错,我还能有地方使劲,这直接卡在这里,就让我优点难搞。
经过博主反复排查,竟然是自己搭建的线程没有开启,怪不得创建完的超线程还可以正常往里面放任务。
在这里,就顺别总结一下线程池的搭建思路吧,帮助大家避免没有开启线程的低级错误:
第一步:定义一个类,用于构建线程池的基本框架
第二部:创建可以传一个参数n的init魔法方法,随后创建一个队列,随后利用for循环创建一个可以控制线程数的线程并设置守护线程(这里一定要在在创建线程后直接开启线程)
第三步:在类里面重新定义一下内容为put和join方法的函数,这里不仅是为了方便后续使用时调用方便,还是因为队列被定义在类里了,无法在类之外调用这个队列。(此时类的设置完成啦)
第四部:创建任务(函数),注意这个函数不是在类里面的
第五部:编写主程序,通过 创建线程数量>添加任务>设置阻塞 的步骤完成具体线程的创建
以上就是今天的分享啦~
感谢大家阅读
【线程池开关与搭建的那些事】end...
推荐阅读
- 多线程|【java】 如何自己写一把多线程锁 中 重写lock,trylock,unlok方法
- CPU是海王(聊聊|CPU是海王?聊聊 主/子线程 和 同/异步 的关系)
- C++|C++ qt实现打开关闭状态按钮的代码
- [C++]C风格、C++风格和C++11特性的线程池
- C#中Thread(线程)和Task(任务)实例详解
- 嵌入式|锂电池充电(TP4056A芯片)电路分享
- JAVA|【Java学习】网络编程全总结——TCP、Udp、多线程、IO流、Socket、简易在线咨询聊天室、Java爬虫
- 计算机视觉|平均池化和最大池化分别适用于什么场景呢()
- C#|C# 线程与任务
- Android中的进程名和线程名