文档章节

多线程Thread-多线程顺序执行

k
 kaixinguo314
发布于 07/20 10:24
字数 256
阅读 5
收藏 0

需求:现在有两个任务,任务1和任务2,任务1中有多个线程,并且任务2必须等任务1完成后才能执行。

namespace TThread
{
    class Program
    {
        static void Main(string[] args)
        {
            int num = 100;
            TheadInfo[] threadInfos = new TheadInfo[num];
            for(int i = 0; i< num; i++)
            {
                TheadInfo theadInfo = new TheadInfo();
                theadInfo.ThreadName = "Thread" + i;
                theadInfo.ThreadStatus = '0';
                threadInfos[i] = theadInfo;
            }
            for(int i = 0; i < num; i++)
            {
                TMyThread myThread = new TMyThread();
                myThread.theadInfo = threadInfos[i];
                Thread thd = new Thread(myThread.DoWork);
                thd.Start();
            }
            bool hasFinished = true;
            //增加死循环,判断线程是否全部结束
            while (true)
            {
                hasFinished = true;
                Thread.Sleep(1000);  //暂停1s钟,让配对的线程有匹配的机会
                foreach (TheadInfo item in threadInfos)
                {
                    Console.WriteLine(item.ThreadName+"  "+item.ThreadStatus);
                    if (item.ThreadStatus == '0')
                    {
                        hasFinished = false;
                        break;
                    }
                }
                if (hasFinished)
                    break;
            }
            Console.WriteLine("All Threads Finished");
            Console.ReadKey();
        }
    }

    class TheadInfo
    {
        public string ThreadName;
        public char ThreadStatus;
    }
    class TMyThread
    {
        public TheadInfo theadInfo;     
        public void DoWork()
        {
            Console.WriteLine("线程 "+ theadInfo.ThreadName + "开始");
            Thread.Sleep(500);
            theadInfo.ThreadStatus = '1';
            Console.WriteLine("线程 " + theadInfo.ThreadName + "结束");
        }
    }
}

 

© 著作权归作者所有

共有 人打赏支持
k
粉丝 0
博文 141
码字总数 84826
作品 0
杭州
程序员
多线程学习笔记(一)

一 . 使用多线程的优点 可以在同一时间内运行更多不同种类的任务 注: 多线程是异步的,即代码顺序不一定是执行顺序,线程被调用的时机是随机的 二 . 实现多线程的方法 实现多线程的方法主要有两...

scymore
2016/08/26
22
2
39. Python 多线程实例 多线程锁

1.多线程 多线程和多进程的表现形式差不多 IO密集型用多线程 线程是应用程序中的最小单元 多线程的实现有两种方式: 方法一: 将要执行的方法作为参数传给Thread的构造方法(和多进程类似) ...

ln286577399
2017/12/13
0
0
ios多线程之NSThread

ios多线程之NSThread 什么是线程: 一个进程想要执行任务,必须至少得有一个线程,但是只拥有一个主线程,线程是进程的基本执行单位,一个进程的所有任务必须在线程中执行。 线程的分类: 串...

zhenghaoLi
2016/09/03
9
0
多线程

1、基本概念 什么是进程: 进程是在系统中运行的一个程序,每个进程之间是独立的,每个进程均运⾏在其专有且受保护的内存空间内。 什么是线程: ⼀个进程想要执⾏任务,必须得有线程(⾄少一个线程...

魏萌萌丶
2016/09/08
50
0
Java 多线程之 Thread 类 和 Runnable 接口初步使用

Thread 类 Thread 类是在 JDK1.0 时就存在的, 在 Java 中接触的多线程开发基本上都会从这个类开始。 Thread之定义线程类 使用 Thread 创建线程的方法很简单, Thread 是一个类, 在需要创建...

阿进的写字台
08/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Java日期和时间获取问题

获取年月日时分秒 Calendar cal = Calendar.getInstance();//获取年int year = cal.get(Calendar.YEAR);//获取月,范围是0-11,最后使用需+1int month = cal.get(Cal...

lanyu96
24分钟前
7
0
Ceph学习笔记2-在Kolla-Ansible中使用Ceph后端存储

环境说明 使用Kolla-Ansible请参考《使用Kolla-Ansible在CentOS 7单节点上部署OpenStack Pike》; 部署Ceph服务请参考《Ceph学习笔记1-Mimic版本多节点部署》。 配置Ceph 以osdev用户登录: ...

LastRitter
27分钟前
6
0
OSChina 周二乱弹 —— 老司机表示右手无处安放

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @花间小酌 :分享李宗盛的单曲《鬼迷心窍》--春风再美也比不上你的笑 《鬼迷心窍》 - 李宗盛 手机党少年们想听歌,请使劲儿戳(这里) 每天早...

小小编辑
39分钟前
225
5
复习2

10月22日任务 awk 中使用外部shell变量 awk 合并一个文件 把一个文件多行连接成一行 awk中gsub函数的使用 awk 截取指定多个域为一行 过滤两个或多个关键词 用awk生成以下结构文件 awk用print...

hhpuppy
47分钟前
5
0
原型模式

1、原型模式-定义 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象 克隆(浅度克隆->拷贝值类型或者引用,深度克隆->创建新的对象,开辟新的内存) 例如客户端知道抽象Pro...

阿元
今天
62
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部