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# 线程池执行操作例子的更多相关文章

  1. ThreadPoolExecutor源码分析-面试问烂了的Java线程池执行流程,如果要问你具体的执行细节,你还会吗?

    Java版本:8u261. 对于Java中的线程池,面试问的最多的就是线程池中各个参数的含义,又或者是线程池执行的流程,彷佛这已成为了固定的模式与套路.但是假如我是面试官,现在我想问一些更细致的问题, ...

  2. Java 使用线程池执行若干任务

    在执行一系列带有IO操作(例如下载文件),且互不相关的异步任务时,采用多线程可以很极大的提高运行效率.线程池包含了一系列的线程,并且可以管理这些线程.例如:创建线程,销毁线程等.本文将介绍如何使用Ja ...

  3. 捕获Java线程池执行任务抛出的异常

    捕获Java线程池执行任务抛出的异常Java中线程执行的任务接口java.lang.Runnable 要求不抛出Checked异常, public interface Runnable { publi ...

  4. ScheduledThreadPoolExecutor 使用线程池执行定时任务

    转自:https://segmentfault.com/a/1190000008038848 在现实世界里,我们总是免不了要定期去做一件事情(比如上课)—— 在计算机的世界里,更是如此.比如我们手机每 ...

  5. 对象回收过程?线程池执行过程? map原理?集合类关系?synchronized 和 volatile ? 同一个类的方法事务传播控制还有作用吗?java 锁

    1.  对象回收过程? 可达性分析算法: 如果一个对象从 GC Roots 不可达时,则证明此对象不可用. 通过一系列称为GC ROOTS的对象作为起点,从这些起点往下搜索,搜索走过的路径 称为引用链 ...

  6. Java队列——线程池创建的例子

    线程池为线程生命周期开销问题和资源不足问题提供了解决方案.通过对多个任务重用线程,线程创建的开销被分摊到了多个任务上.其好处是,因为在请求到达时线程已经存在,所以无意中也消除了线程创建所带来的延迟.这 ...

  7. spring boot使用自定义配置的线程池执行Async异步任务

    一.增加配置属性类 package com.chhliu.springboot.async.configuration; import org.springframework.boot.context ...

  8. java 多线程 线程池:多核CPU利用ExecutorService newWorkStealingPool; ForkJoinPool线程池 执行可拆分的任务RecursiveAction;RecursiveTask

    1,给定并行级别: 1,ExecutorService newWorkStealingPool(int parallelism): 创建持有足够的线程的线程池来支持给定的并行级别,该方法还会使用多个队 ...

  9. 戏(细)说Executor框架线程池任务执行全过程(下)

    上一篇文章中通过引入的一个例子介绍了在Executor框架下,提交一个任务的过程,这个过程就像我们老大的老大要找个老大来执行一个任务那样简单.并通过剖析ExecutorService的一种经典实现Th ...

随机推荐

  1. Python3之pymysql导入mysql

    $cat insert.py #!/usr/bin/python # -*- coding: UTF-8 -*- import os import sys import datetime import ...

  2. 解析虚拟VMware三种网络模式的根本区别

    网络模式(文字解说)VMWare提供了三种工作模式,它们是bridged(桥接模式).NAT(网络地址转换模式)和host-only(主机模式).要想在网络管理和维护中合理应用它们,你就应该先了解一下 ...

  3. 面试总结:QuickSort 解析

    Quick Sort http://en.wikipedia.org/wiki/Quicksort Quicksort, or partition-exchange sort, is a sortin ...

  4. 不要问我有多懒,写个脚本跑django

    写django的都知道,要跑起django测试环境,只需要 python manage.py runserver 就可以了,但是时间一长,就觉得敲这个命令太浪费时间了,而我又是个懒人. 同事用的是ct ...

  5. Eigen教程(9)

    整理下Eigen库的教程,参考:http://eigen.tuxfamily.org/dox/index.html Eigen并没有为matrix提供直接的Reshape和Slicing的API,但是 ...

  6. ios 让textView被键盘挡住上移

    注册键盘通知 #pragma mark - 键盘通知 - (void)addNoticeForKeyboard { //注册键盘出现的通知 [[NSNotificationCenter default ...

  7. iOS提示The app icon set named "AppIcon" did not have any applicable content 错误

    按照您的错误提示您应该是,这样设置的吧,看下下图: 如果是的话,请确保您将错有的Icon图片都拽进了Images.xcassets这个文件夹中,如下图所示: 如果您的Icon图片并没有在Images. ...

  8. .net将枚举转成List

    using System; using System.Collections.Generic; using System.ComponentModel; namespace zifar.SgmhWeb ...

  9. Android开发之获取手机SIM卡信息

    TelephonyManager是一个管理手机通话状态.电话网络信息的服务类.该类提供了大量的getXxx(),方法获取电话网络的相关信息. TelephonyManager类概述: 可用于訪问有关设 ...

  10. Java编程的逻辑 (43) - 剖析TreeMap

    本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http:/ ...