注意:如果电脑是单核单线程的,这么做是没有意义的。

这里直接贴一下主要代码

using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;
using System.Data; namespace ThreadTest
{
class Moultithreading
{
//创建2个线程
Thread ThreadOne = new Thread(new ThreadStart(ThreadOne1));
Thread ThreadTwo = new Thread(new ThreadStart(ThreadTwo2));
//ListInfo用于存放待执行的任务,ListInfo2用于存放已经执行过的任务(做一个标记的作用)
static List<string> ListInfo = new List<string>();
static List<string> ListInfo2 = new List<string>();
public Moultithreading()
{
//假定有20个待执行任务
for (int i = ; i < ; i++)
{
ListInfo.Add(i + "");
}
ThreadOne.Start();
ThreadTwo.Start();
}
/// <summary>
/// 线程1执行逻辑
/// </summary>
private static void ThreadOne1()
{
ThreadExecute("One");
}
/// <summary>
/// 线程2执行逻辑,与线程1相同
/// </summary>
private static void ThreadTwo2()
{
ThreadExecute("Two");
}
/// <summary>
/// 线程执行任务的通用方法,这里因为2个线程执行逻辑相同,就写到一起了。用一个参数加以区分
/// </summary>
/// <param name="ThreadNum"></param>
private static void ThreadExecute(string ThreadNum)
{
for (int i = ; i < ListInfo.Count; i++)
{
try
{
//当前任务未执行过,且未被其他线程占用
if (!ListInfo2.Contains(ListInfo[i]) && Monitor.TryEnter(ListInfo[i], ))
{
Console.WriteLine("线程" + ThreadNum + "执行了任务:" + ListInfo[i]);//执行任务
ListInfo2.Add(ListInfo[i]);//任务执行完添加标记
Thread.Sleep();
}
}
finally
{
if (Monitor.TryEnter(ListInfo[i]))
{
Monitor.Exit(ListInfo[i]);//释放锁
}
}
}
}
}
}
执行结果:

C#多个线程同时执行一个任务示例的更多相关文章

  1. 重新想象 Windows 8 Store Apps (42) - 多线程之线程池: 延迟执行, 周期执行, 在线程池中找一个线程去执行指定的方法

    [源码下载] 重新想象 Windows 8 Store Apps (42) - 多线程之线程池: 延迟执行, 周期执行, 在线程池中找一个线程去执行指定的方法 作者:webabcd 介绍重新想象 Wi ...

  2. CountDownLatch,一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。

    CountDownLatch,一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待. 主要方法 public CountDownLatch(int count); pu ...

  3. 既然CPU一次只能执行一个线程,那多线程存在的意义是什么?

    今天看到了一篇文章,终于解除了一直的疑惑.         原文链接:https://www.cnblogs.com/qingbafengliuxia/p/10171638.html CPU的时间是按 ...

  4. 既然CPU同一时间只能执行一个线程,为什么存在并发问题

    一点小疑惑终于解开啦 1.CPU的时间是按时间片分的,而不是一个时间点,并发问题是由于CPU线程切换导致的. 现在假设有一段代码 if(i == 1) { i++; //断点1 system.out. ...

  5. 通过使用Web Workers,Web应用程序可以在独立于主线程的后台线程中,运行一个脚本操作。这样做的好处是可以在独立线程中执行费时的处理任务,从而允许主线程(通常是UI线程)不会因此被阻塞/放慢。

    Web Workers API - Web API 接口参考 | MDNhttps://developer.mozilla.org/zh-CN/docs/Web/API/Web_Workers_API ...

  6. JAVA多线程之当一个线程在执行死循环时会影响另外一个线程吗?

    一,问题描述 假设有两个线程在并发运行,一个线程执行的代码中含有一个死循环如:while(true)....当该线程在执行while(true)中代码时,另一个线程会有机会执行吗? 二,示例代码(代码 ...

  7. Qt中暂停线程的执行(主线程和工作线程共用一把锁,一旦主线程将它锁上,工作线程就无法运行了,这也是一个办法)

    在线程中定义一个信号量: QMutex pause; 把run()函数中循环执行的部分用信号量pause锁住:   void run()   {   while(1)   {   pause.lock ...

  8. java中怎么终止一个线程的执行----个人学习心得

    参考了一下两个网站的介绍: ①:http://blog.csdn.net/liuhanhan512/article/details/7077601 ②:http://www.blogjava.net/ ...

  9. Qt中暂停线程的执行

    在线程中定义一个信号量 QMutex pause; 把run()函数中循环执行的部分用信号量pause锁住: void run() { while(1) { pause.lock(); //循环执行的 ...

随机推荐

  1. Linux网络编程服务器模型选择之并发服务器(下)

    前面两篇文章(参见)分别介绍了循环服务器和简单的并发服务器网络模型,我们已经知道循环服务器模型效率较低,同一时刻只能为一个客户端提供服务,而且对于TCP模型来说,还存在单客户端长久独占与服务器的连接, ...

  2. First Android application

    In eclipse ADT : 1.创建一个新工程 File -> New -> Android Application Project 2.三个主要的文件 /src/MainActiv ...

  3. HUE配置文件hue.ini 的pig模块详解(图文详解)(分HA集群和非HA集群)

    不多说,直接上干货! 一.默认的pig配置文件 ########################################################################### ...

  4. package-info类解读

    类不能带有public.private访问权限.package-info.java再怎么特殊,也是一个类文件,也会被编译成package-info.class,但是在package-info.java ...

  5. 使用KindEditor完成图片上传(springmvc&fastdfs/springmvc&ftp)

    前端使用KindEditor,后台使用Springmvc 1 拷贝KindEditor相关文件到项目中 拷贝KindEditor相关文件到项目中 2 准备一个jsp页面 页面中我准备了一个超链接,点击 ...

  6. HTTP访问的两种方式:HttpURLConnection和HTTPClient的比较

    http://blog.sina.com.cn/s/blog_87216a0001014sm7.html http://www.2cto.com/kf/201305/208770.html ----- ...

  7. Hive初始

    一.Hive概念 二.为什么要是用Hive 三.Hive优缺点 四.hive架构 一.Hive概念 Hive最初是应Facebook每天产生的海量新兴社会网络数据进行管理和机器学习的需求而产生和发展的 ...

  8. 吴恩达《深度学习》第四门课(3)目标检测(Object detection)

    3.1目标定位 (1)案例1:在构建自动驾驶时,需要定位出照片中的行人.汽车.摩托车和背景,即四个类别.可以设置这样的输出,首先第一个元素pc=1表示有要定位的物体,那么用另外四个输出元素表示定位框的 ...

  9. java项目部署运行

      运用插件运行项目: tomcat-maven-plugin:1.1   1.右键项目-->run as -->5 maven build-->tomcat:run         ...

  10. 微信小程序(二)框架的基本组成

    安装好 微信web开发者工具后. 让我们来了解一下工具的框架,上图: 工具总共分为三个部分,左上角红框框: 模拟器:模拟手机小程序界面,模拟器左上角可以选择手机型号,右上角红框处,千万别选成Offic ...