C# 线程池执行操作例子

public partial class Form1 : Form
{
CountdownEvent hander = new CountdownEvent(); public static object lock_action = new object();
public Form1()
{
InitializeComponent();
} private void button1_Click(object sender, EventArgs e)
{
for (int i = ; i < ; i++)
{
ThreadPool.QueueUserWorkItem(new WaitCallback(Run1), i);
}
textBox1.Invoke(new Action(() =>
{
textBox1.AppendText("按钮1执行完毕".Log());
}));
}
private void button2_Click(object sender, EventArgs e)
{ //ThreadPool.SetMaxThreads(10, 30);
for (int i = ; i < ; i++)
{
ThreadPool.QueueUserWorkItem(new WaitCallback(Run2), i);
}
hander.Wait();
textBox1.AppendText("按钮2执行完毕".Log());
} private void Run1(object str)
{
Thread.Sleep();
textBox1.AppendText(str.ToString().Log());
}
private void Run2(object str)
{
Thread.Sleep();
textBox1.AppendText(str.ToString().Log());
hander.Signal();
} }
C# 线程池执行操作例子的更多相关文章
- ThreadPoolExecutor源码分析-面试问烂了的Java线程池执行流程,如果要问你具体的执行细节,你还会吗?
Java版本:8u261. 对于Java中的线程池,面试问的最多的就是线程池中各个参数的含义,又或者是线程池执行的流程,彷佛这已成为了固定的模式与套路.但是假如我是面试官,现在我想问一些更细致的问题, ...
- Java 使用线程池执行若干任务
在执行一系列带有IO操作(例如下载文件),且互不相关的异步任务时,采用多线程可以很极大的提高运行效率.线程池包含了一系列的线程,并且可以管理这些线程.例如:创建线程,销毁线程等.本文将介绍如何使用Ja ...
- 捕获Java线程池执行任务抛出的异常
捕获Java线程池执行任务抛出的异常Java中线程执行的任务接口java.lang.Runnable 要求不抛出Checked异常, public interface Runnable { publi ...
- ScheduledThreadPoolExecutor 使用线程池执行定时任务
转自:https://segmentfault.com/a/1190000008038848 在现实世界里,我们总是免不了要定期去做一件事情(比如上课)—— 在计算机的世界里,更是如此.比如我们手机每 ...
- 对象回收过程?线程池执行过程? map原理?集合类关系?synchronized 和 volatile ? 同一个类的方法事务传播控制还有作用吗?java 锁
1. 对象回收过程? 可达性分析算法: 如果一个对象从 GC Roots 不可达时,则证明此对象不可用. 通过一系列称为GC ROOTS的对象作为起点,从这些起点往下搜索,搜索走过的路径 称为引用链 ...
- Java队列——线程池创建的例子
线程池为线程生命周期开销问题和资源不足问题提供了解决方案.通过对多个任务重用线程,线程创建的开销被分摊到了多个任务上.其好处是,因为在请求到达时线程已经存在,所以无意中也消除了线程创建所带来的延迟.这 ...
- spring boot使用自定义配置的线程池执行Async异步任务
一.增加配置属性类 package com.chhliu.springboot.async.configuration; import org.springframework.boot.context ...
- java 多线程 线程池:多核CPU利用ExecutorService newWorkStealingPool; ForkJoinPool线程池 执行可拆分的任务RecursiveAction;RecursiveTask
1,给定并行级别: 1,ExecutorService newWorkStealingPool(int parallelism): 创建持有足够的线程的线程池来支持给定的并行级别,该方法还会使用多个队 ...
- 戏(细)说Executor框架线程池任务执行全过程(下)
上一篇文章中通过引入的一个例子介绍了在Executor框架下,提交一个任务的过程,这个过程就像我们老大的老大要找个老大来执行一个任务那样简单.并通过剖析ExecutorService的一种经典实现Th ...
随机推荐
- animate.css源码
/*! 动画属性: animation-name:动画名称 animation-duration:动画时间 animation-timing-function:动画的速度曲线 animation-de ...
- js把预定义的html字符串转换为 HTML 实体 htmlspecialchars 输出html实体内容包括标签,而不自动转义标签,只显示内容,类似php的htmlspecialchars
一.html字符串转换为 HTML 实体 htmlspecialchars function htmlspecialchars(str){ str = str ...
- Python os.popen() 方法
简述 就是新建一个管道执行一个命令. 方法是os.popen(命令,权限,缓冲大小) 比如 a = 'mkdir def' b = os.popen(a,) print b 就是等同于使用命令去创建了 ...
- 微服务之springCloud-config-bus(十三)
简介 当我们的业务系统越来越庞大复杂的时候,各种配置就会层出不群.一旦配置修改了,那么我们就是必须修改后停服务,然后再上线,如果服务少,我们可以手动来操作,如果是成千上百的服务,如果是手动操作,肯定就 ...
- 愿Linux红帽旋风吹得更加猛烈吧!
大约在2000年年初.<中国青年出版社>准备从台湾引进图书(中译本)"Linux红帽旋风"(美国Robert Young),让我为该书写一个前言. 该书作者罗伯特.扬是 ...
- mac下java环境变量配置
发现一个坑:最近发现有同事按照本文方式配置jdk环境变量一直不成功,后来发现他是使用了“Oh-My-Zsh”,配置文件的路径不是/etc/profile或~/.bash_profile,它有自己的配置 ...
- MVC教程六:视图的寻址
一.为什么要使用视图 使用视图以后有两个优点: 1.保证页面内容输出和控制器代码的分离.和Code Behind不同,CodeBehind实现的是物理分离,视图可以实现逻辑上的分离. 2.更方便.更直 ...
- SpringBoot 集成 Mybatis 使用 Druid数据源 MySQL数据库
思路: 1.创建项目 项目结构如下: 2.导入相应包 POM.xml文件如下: <?xml version="1.0" encoding="UTF-8"? ...
- eclipse中设置字体为VC经典字体Fixedsys
- 微信小程序——wxParse使用方法
wxParse是一个微信小程序富文本解析组件.现在小程序里面自带了一个<rich-text>组件也能解析富文本,但是表现不尽人意.所以我还是采用的wxParse来解析富文本的. wxPar ...