线程池使用 转帖

本文通过实例演示了如何使用线程池进行任务调度,并展示了如何获取线程池中线程的状态信息。文中还介绍了如何利用线程池进行计算任务处理及参数传递,包括设置线程池的最大线程数,调用线程池执行方法等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

namespace WpfThreadTest
2 {
3     /// <summary>
4     /// ThreadPoolDemo.xaml 的交互逻辑
5     /// </summary>
6     public partial class ThreadPoolDemo : Window
7     {
8         public ThreadPoolDemo()
9         {
10             InitializeComponent();
11             ///设置线程池的最大可用辅助线程数目,最大异步线程数目
12             ThreadPool.SetMaxThreads(100, 10);      
13
14         }
15
16         private void button1_Click(object sender, RoutedEventArgs e)
17         {          
18              //调用线程去计算数字,仅供演示
19              ThreadPool.QueueUserWorkItem(new WaitCallback(CountNumber), 1);
20         }
21         private void CountNumber(object state)
22         {
23             int count = int.Parse(state.ToString());
24             while (true)
25             {               
26                 count++;
27                 this.textBlock2.Dispatcher.Invoke(
28                     DispatcherPriority.Normal,
29                     new Action(() =>
30                     {
31                         this.textBlock2.Text = count.ToString();
32                     }));
33                 Thread.Sleep(100);
34             }
35         }
36         /// <summary>
37         /// 测试线程中传递引用对象,以期望获得返回值
38         /// </summary>
39         /// <param name="state"></param>
40         private void ReturnValueMethod(object state)
41         {
42             MyParam myParam = state as MyParam;
43             myParam.MyInt = 100;
44             myParam.MyString = "updated string";           
45         }
46
47         private void button2_Click(object sender, RoutedEventArgs e)
48         {
49             ///将引用对象传递给线程
50             MyParam myParam = new MyParam() { MyInt = 12, MyString = "test" };
51           
52             ThreadPool.QueueUserWorkItem(new WaitCallback(ReturnValueMethod), myParam);           
53
54             ///主线程睡眠5ms后,再去读取对象的值
55             ///如果不睡眠,直接读取,可能读不到修改后的值,因为他们处于不同的线程当中
56             ///当主线程去读取时,子线程尚未更改,
57             ///即便如此,也会有读取不到的时候,故此种传值方式并不十分可取,
58             ///具体线程返回值可以参考MSDN http://msdn.microsoft.com/zh-cn/library/wkays279.aspx
59             Thread.Sleep(5);
60             this.textBlock1.Text=string.Format("MyInt:{0},MyString:{1}", myParam.MyInt, myParam.MyString);
61         }
62
63         private void button3_Click(object sender, RoutedEventArgs e)
64         {
65             ThreadPool.QueueUserWorkItem(new WaitCallback(GetThreadPoolInfo), null);         
66         }
67         private void GetThreadPoolInfo(object state)
68         {
69             while (true)
70             {
71                 int workerThreads = 0;
72                 int completionPortThreads = 0;
73                 ThreadPool.GetAvailableThreads(out workerThreads, out completionPortThreads);
74                 this.textBlock3.Dispatcher.Invoke(DispatcherPriority.SystemIdle, new Action(() =>
75                 {
76                     this.textBlock3.Text =
77                         string.Format("池中可用辅助线程:{0},可用异步 I/O 线程:{1}",
78 workerThreads, completionPortThreads);
79                 }));
80                 Thread.Sleep(1000);
81             }
82         }
83     }
84     public class MyParam
85     {
86         public int MyInt { get; set; }
87         public string MyString { get; set; }
88     }
89 }

资源下载链接为: https://pan.quark.cn/s/22ca96b7bd39 在当今的软件开发领域,自动化构建与发布是提升开发效率和项目质量的关键环节。Jenkins Pipeline作为一种强大的自动化工具,能够有效助力Java项目的快速构建、测试及部署。本文将详细介绍如何利用Jenkins Pipeline实现Java项目的自动化构建与发布。 Jenkins Pipeline简介 Jenkins Pipeline是运行在Jenkins上的一套工作流框架,它将原本分散在单个或多个节点上独立运行的任务串联起来,实现复杂流程的编排与可视化。它是Jenkins 2.X的核心特性之一,推动了Jenkins从持续集成(CI)向持续交付(CD)及DevOps的转变。 创建Pipeline项目 要使用Jenkins Pipeline自动化构建发布Java项目,首先需要创建Pipeline项目。具体步骤如下: 登录Jenkins,点击“新建项”,选择“Pipeline”。 输入项目名称和描述,点击“确定”。 在Pipeline脚本中定义项目字典、发版脚本和预发布脚本。 编写Pipeline脚本 Pipeline脚本是Jenkins Pipeline的核心,用于定义自动化构建和发布的流程。以下是一个简单的Pipeline脚本示例: 在上述脚本中,定义了四个阶段:Checkout、Build、Push package和Deploy/Rollback。每个阶段都可以根据实际需求进行配置和调整。 通过Jenkins Pipeline自动化构建发布Java项目,可以显著提升开发效率和项目质量。借助Pipeline,我们能够轻松实现自动化构建、测试和部署,从而提高项目的整体质量和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值