线程池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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • SpringCloud之Eureka使用篇

    1.单例EurekaServer1.1环境准备1.首先我这里有spring-cloud-parentpom工程2.spring-cloud-eureka-serverEurekaServer子工程这里端口我们使用90开头3.spring-cloud-order-service-consumer订单调用服务(也就是咱们的服务消费者)这里端口我们使用80开头4.spring-cloud-order-service-provider订单提供服务(服务提供者)这里端口我们使

    2022年4月6日
    54
  • RequestParam注解用法[通俗易懂]

    RequestParam注解用法[通俗易懂]最简单的两种写法,在写接口时:加或不加@RequestParam注解的区别第一种写法参数为非必传,第二种写法参数为必传。参数名为userId第二种写法可以通过@RequestParam(required=false)设置为非必传。因为required值默认是true,所以默认必传第二种写法可以通过@RequestParam(“userId”)或者@RequestParam(value=“userId”)指定参数名第二种写法可以通过@RequestParam(defaultValue=“

    2022年10月24日
    0
  • Java标识符的命名规则[通俗易懂]

    Java标识符的命名规则[通俗易懂]Java语言中,为各种变量、方法和类等起的名字称为标识符Java标识符的命名规则:应以字母、下划线、美元符开头后跟字母、下划线、美元符或数字Java标识符大小写敏感,长度无限制1.java中能用作标识符的有:26个英文字母(大、小写),数字,下划线,美元符号$。但是不能以数字开头。2.类名首个字母必须大写,多个单词组成的,每个单词首字母都要大写。3.方法名一般首个字母小写(构造…

    2022年7月8日
    34
  • mybatis 数据权限插件_mybatis查询大量数据

    mybatis 数据权限插件_mybatis查询大量数据数据权限管理中心由于公司大部分项目都是使用mybatis,也是使用mybatis的拦截器进行分页处理,所以技术上也直接选择从拦截器入手需求场景第一种场景:行级数据处理原sql:selectid,username,regionfromsys_user;需要封装成:select*from(selectid,username,regionfromsys_user)wh…

    2022年9月4日
    6
  • linux压缩命令常用:tar,tgz,gzip,zip,rar

    linux压缩命令常用:tar,tgz,gzip,zip,rarlinux压缩命令常用的有三个:tar,tgz,gzip,zip一,tar(一)tar压缩命令tar-cvfexamples.tarfiles|dir#说明:-c,–createcreateanewarchive创建一个归档文件-v,–verboseverboselylistfilesprocessed显示创建归档文件的进程-f,…

    2022年5月9日
    57
  • 硬件知识:DP接口和HDMI接口对比,看完你就懂了!

    硬件知识:DP接口和HDMI接口对比,看完你就懂了!电脑显示器高清传输通过会用到两个接口,就是DP接口和HDMI接口,今天电脑学习小编带大家对比一下这两个接口。一、DP接口DisplayPort缩写DP,是一个由PC及芯片制造商联盟开发,视…

    2022年7月22日
    40

发表回复

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

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