线程池ThreadPool中QueueUserWorkItem的使用

线程池ThreadPool中QueueUserWorkItem的使用先看代码://设置可以同时处于活动状态的线程池的请求数目。boolpool=ThreadPool.SetMaxThreads(8,8);if(pool){ThreadPool.QueueUserWorkItem(o=>this.DoSomethingLong(“参数1”));ThreadPool

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

先看代码:

                 //设置可以同时处于活动状态的线程池的请求数目。 
                bool pool = ThreadPool.SetMaxThreads(8, 8);
                if (pool) {
                    ThreadPool.QueueUserWorkItem(o => this.DoSomethingLong("参数1"));
                    ThreadPool.QueueUserWorkItem(o => this.DoSomethingLong("参数2"));
                    ThreadPool.QueueUserWorkItem(o => this.DoSomethingLong("参数3"));
                    ThreadPool.QueueUserWorkItem(o => this.DoSomethingLong("参数4"));
                    ThreadPool.QueueUserWorkItem(o => this.DoSomethingLong("参数5"));
                    ThreadPool.QueueUserWorkItem(o => this.DoSomethingLong("参数6"));
                    ThreadPool.QueueUserWorkItem(o => this.DoSomethingLong("参数7"));
                    ThreadPool.QueueUserWorkItem(o => this.DoSomethingLong("参数8"));
                    ThreadPool.QueueUserWorkItem(o => this.DoSomethingLong("参数9"));
                    ThreadPool.QueueUserWorkItem(o => this.DoSomethingLong("参数10"));
                    ThreadPool.QueueUserWorkItem(o => this.DoSomethingLong("参数11"));
                };

上面代码先设置线程池中最大并发量为8个,然后通过QueueUserWorkItem向线程池中添加11个方法,运行,输出结果:

线程池ThreadPool中QueueUserWorkItem的使用

可以看出,先运行了8个,当有一个任务结束后线程池中有空闲线程时,排队的下一个任务才会执行,

把最大并发量改成9试试:

{
                //设置可以同时处于活动状态的线程池的请求数目。 
                bool pool = ThreadPool.SetMaxThreads(9, 9);
                if (pool) {
                    ThreadPool.QueueUserWorkItem(o => this.DoSomethingLong("参数1"));
                    ThreadPool.QueueUserWorkItem(o => this.DoSomethingLong("参数2"));
                    ThreadPool.QueueUserWorkItem(o => this.DoSomethingLong("参数3"));
                    ThreadPool.QueueUserWorkItem(o => this.DoSomethingLong("参数4"));
                    ThreadPool.QueueUserWorkItem(o => this.DoSomethingLong("参数5"));
                    ThreadPool.QueueUserWorkItem(o => this.DoSomethingLong("参数6"));
                    ThreadPool.QueueUserWorkItem(o => this.DoSomethingLong("参数7"));
                    ThreadPool.QueueUserWorkItem(o => this.DoSomethingLong("参数8"));
                    ThreadPool.QueueUserWorkItem(o => this.DoSomethingLong("参数9"));
                    ThreadPool.QueueUserWorkItem(o => this.DoSomethingLong("参数10"));
                    ThreadPool.QueueUserWorkItem(o => this.DoSomethingLong("参数11"));
                };
               
            }

运行结果:

线程池ThreadPool中QueueUserWorkItem的使用

果然没错,这次是先执行9个,当有空闲线程时再执行下一个

 

总结一下

QueueUserWorkItem:将方法排入队列以便执行。 此方法在有线程池线程变得可用时执行。

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/189860.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月7日 上午11:15
下一篇 2026年3月7日 上午11:43


相关推荐

  • 火狐浏览器显示“已阻止载入混合活动内容“的解决方法

    火狐浏览器显示“已阻止载入混合活动内容“的解决方法

    2021年11月4日
    99
  • 3分钟理解np.meshgrid()[通俗易懂]

    3分钟理解np.meshgrid()[通俗易懂]欢迎光临我的个人主页官方解释:np.meshgrid(*xi,**kwargs)Returncoordinatematricesfromcoordinatevectors.从坐标向量中返回坐标矩阵不够直观直观的例子二维坐标系中,X轴可以取三个值1,2,3,Y轴可以取三个值7,8,请问可以获得多少个点的坐标?显而易见是6个:(1,7)(2,7)(3,7)(1,8…

    2022年4月28日
    57
  • FFmpeg从入门到精通读书笔记(1)

    FFmpeg从入门到精通读书笔记(1)笔者才开始学习音视频开发,FFmpeg从入门到精通读书笔记系列主要是基于阅读刘歧、赵文杰编著的《FFmpeg从入门到精通》以及雷霄骅博士博客总结写的入门心得体会。官方文档资料FFmpeg官方文档:https://ffmpeg.org/documentation.htmlFFmpeg官方wiki:http://trac.ffmpeg.org/wiki中文经典资料雷霄骅博士csdn链…

    2022年6月26日
    28
  • 通俗易懂:图解10大CNN网络架构

    通俗易懂:图解10大CNN网络架构作者 RaimiKarim 译者 Major 编辑 赵雪出品 AI 科技大本营 ID rgznai100 导语 近年来 许多卷积神经网络 CNN 跃入眼

    2026年3月17日
    2
  • alibaba fastjson jsonarray转list[通俗易懂]

    alibaba fastjson jsonarray转list[通俗易懂]Stringavatar=teacherEntity.getAvatar();if(!StringUtils.isEmpty(avatar)){List<JSONObject>list=JSONObject.parseArray(avatar,JSONObject.class);Stringava=(String)list.get(0).get(“filePath”);tea

    2022年6月23日
    64
  • gbase导出sql_gbase修改字段名称

    gbase导出sql_gbase修改字段名称喵了个咪的。到目前为止,自己已经用过SQLSERVER,MySQL,Oracle,SQLite,加上南大通用GBASE五种数据库了。虽然每种都用的不深注:GBASE提供了C的API,查看手册即可。不支持string。用C++配置GBASE:对方提供了32位和64位windows下的库。在程序中添加gbase.herrmsg.h两个头文件,导入gbaseclient.liblibgb…

    2025年6月19日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号