构造有参数的线程ParameterizedThreadStart
线程 参数 构造 ParameterizedThreadStart
2023-06-13 09:12:32 时间
大家好,又见面了,我是你们的朋友全栈君。
构造有参数的线程就得需要用到ParameterizedThreadStart,查看从元数据可以看出ParameterizedThreadStart是一个委托,参数类型必须是Object类型。
我们通过线程对象的Start方法可以将参数传入,如thread.Start(“20191230”),此时参数“20191230”就会传递给子线程要执行的方法。代码:
class Program
{
static void Main(string[] args)
{
//Thread thread = new Thread(new ParameterizedThreadStart(WorkerA));
Thread thread = new Thread(WorkerA);
thread.Start("20191230");
Console.WriteLine("主程序退出");
}
static void WorkerA(object data) {
Thread.Sleep(1000);
Console.WriteLine("传入的参数:"+data.ToString());
Console.WriteLine("后台程序退出");
}
}
以上代码输出结果为:
既然我们传入的是object类型,那我们也可以传入一个集合或者数组:
static void Main(string[] args)
{
//Thread thread = new Thread(new ParameterizedThreadStart(WorkerA));
Thread thread = new Thread(WorkerA);
List<int> list = new List<int>() { 1, 2, 3 };
thread.Start(list);
Console.WriteLine("主程序退出");
Console.ReadKey();
}
static void WorkerA(object data)
{
List<int> listmy = (List<int>)data;
Thread.Sleep(1000);
for (int i = 0; i < listmy.Count; i++)
{
Console.WriteLine("传入的参数" + listmy[i].ToString());
}
Console.WriteLine("后台程序退出");
}
输出结果为:
Demo链接:https://github.com/wangongshen/Wgs.CSDN.Demo2019
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/159641.html原文链接:https://javaforall.cn
相关文章
- 线程池参数动态调整
- Java并发——线程同步Volatile与Synchronized详解
- 使用ParameterizedThreadStart委托向线程函数传送参数「建议收藏」
- 【踩坑】Android 编译线程爆了, gradle 内存 OOM 解决之路
- 你知道线程池的 创建方式、7大参数、处理流程 和 最大线程数量该如何配置吗
- ForkJoin 线程池[通俗易懂]
- 为什么hashmap线程不安全我们还要用_arraylist线程不安全体现在哪里
- java创建线程池参数_java创建线程的四种方式
- [译文]Go线程安全 - 一个被忽略的问题
- 【Java 并发编程】线程池机制 ( 线程池阻塞队列 | 线程池拒绝策略 | 使用 ThreadPoolExecutor 自定义线程池参数 )
- [javaSE] 并发编程(线程间通信)详解编程语言
- python_Day42_线程-信号量事件条件详解编程语言
- Linux线程: 优化参数调节指南(linux线程参数)
- 进阶学习:如何查看Linux线程栈(查看linux线程栈)
- Linux线程间的正确通讯方式(linux线程通讯)
- 如何在Linux中获取线程ID:简单易懂的方法指南(linux获取线程id)
- C#传递参数到线程的方法汇总