using System;

using System.Threading;

namespace ConsoleThread

{

class ThreadApp

{

static int interval;

static void DisplayNumbers()

{

// 获取当前运行线程的Thread对象实例

Thread thisThread = Thread.CurrentThread;

Console.WriteLine("线程: "+ thisThread.Name + " 已开始运行.");

// 循环计数直到结束,在指定的间隔输出当前计数值

for(int i = 1; i <= 8*interval; i++)

{

if(i%interval == 0)

{

Console.WriteLine(thisThread.Name + ": 当前计数为 " + i);

}

}

Console.WriteLine("线程 " + thisThread.Name + " 完成.");

}

static void Main(string[] args)

{

// 获取用户输入的数字

Console.Write("请输入一个数字:");

interval = int.Parse(Console.ReadLine());

// 定义当前主线程线程对象的名字

Thread thisThread = Thread.CurrentThread;

thisThread.Name = "Main Thread";

// 建立新线程对象

ThreadStart workerStart = new ThreadStart(DisplayNumbers);

Thread workerThread = new Thread(workerStart);

workerThread.Name = "Worker Thread";

workerThread.IsBackground = true;

// 启动新线程

workerThread.Start();

// 主线程同步进行计数

DisplayNumbers();

}

}

}

运行结果:

请输入一个数字:100

线程: Main Thread 已开始运行.

Main Thread: 当前计数为 100

Main Thread: 当前计数为 200

Main Thread: 当前计数为 300

Main Thread: 当前计数为 400

Main Thread: 当前计数为 500

Main Thread: 当前计数为 600

Main Thread: 当前计数为 700

Main Thread: 当前计数为 800

线程 Main Thread 完成.

线程: Worker Thread 已开始运行.

Worker Thread: 当前计数为 100

Worker Thread: 当前计数为 200

Worker Thread: 当前计数为 300

Worker Thread: 当前计数为 400

Worker Thread: 当前计数为 500

Worker Thread: 当前计数为 600

Worker Thread: 当前计数为 700

Worker Thread: 当前计数为 800

线程 Worker Thread 完成.

请输入一个数字:1000000

线程: Main Thread 已开始运行.

Main Thread: 当前计数为 1000000

Main Thread: 当前计数为 2000000

Main Thread: 当前计数为 3000000

Main Thread: 当前计数为 4000000

Main Thread: 当前计数为 5000000

线程: Worker Thread 已开始运行.

Worker Thread: 当前计数为 1000000

Worker Thread: 当前计数为 2000000

Worker Thread: 当前计数为 3000000

Main Thread: 当前计数为 6000000

Main Thread: 当前计数为 7000000

Worker Thread: 当前计数为 4000000

Worker Thread: 当前计数为 5000000

Main Thread: 当前计数为 8000000

线程 Main Thread 完成.

Worker Thread: 当前计数为 6000000

Worker Thread: 当前计数为 7000000

Worker Thread: 当前计数为 8000000

线程 Worker Thread 完成.

在【例】中,对Main()方法做如下修改,就可以看出修改线程的优先级的效果:

// 建立新线程对象

ThreadStart workerStart = new ThreadStart(DisplayNumbers);

Thread workerThread = new Thread(workerStart);

workerThread.Name = "Worker Thread";

workerThread.Priority = AboveNormal;

请输入一个数字:1000000

线程: Main Thread 已开始运行.

Main Thread: 当前计数为 1000000

Main Thread: 当前计数为 2000000

Main Thread: 当前计数为 3000000

Main Thread: 当前计数为 4000000

Main Thread: 当前计数为 5000000

Main Thread: 当前计数为 6000000

线程: Worker Thread 已开始运行.

Worker Thread: 当前计数为 1000000

Worker Thread: 当前计数为 2000000

Worker Thread: 当前计数为 3000000

Worker Thread: 当前计数为 4000000

Worker Thread: 当前计数为 5000000

Worker Thread: 当前计数为 6000000

Worker Thread: 当前计数为 7000000

Worker Thread: 当前计数为 8000000

线程 Worker Thread 完成.

Main Thread: 当前计数为 7000000

Main Thread: 当前计数为 8000000

线程 Main Thread 完成.

在DisplayNumbers()方法的循环体中加上一句代码,:

if(i%interval == 0)

{

Console.WriteLine(thisThread.Name + ": 当前计数为 " + i);

Thread.Sleep(10);             // 让当前工作线程暂停10毫秒

}

现在来看运行结果:

请输入一个数字:1000000

线程: Main Thread 已开始运行.

Main Thread: 当前计数为 1000000

线程: Worker Thread 已开始运行.

Worker Thread: 当前计数为 1000000

Main Thread: 当前计数为 2000000

Main Thread: 当前计数为 3000000

Worker Thread: 当前计数为 2000000

Main Thread: 当前计数为 4000000

Worker Thread: 当前计数为 3000000

Worker Thread: 当前计数为 4000000

Main Thread: 当前计数为 5000000

Worker Thread: 当前计数为 5000000

Worker Thread: 当前计数为 6000000

Main Thread: 当前计数为 6000000

Worker Thread: 当前计数为 7000000

Worker Thread: 当前计数为 8000000

线程 Worker Thread 完成.

Main Thread: 当前计数为 7000000

Main Thread: 当前计数为 8000000

线程 Main Thread 完成.

【转】C#多线程示例的更多相关文章

  1. android 多线程 示例

    public class MyRun implements Runnable { int count = 1000; @Override public void run() { while (true ...

  2. BMDThread控件动态创建多线程示例

    http://www.cnblogs.com/railgunman/archive/2010/12/08/1900688.html BMDThread控件是一套相当成熟的线程控件,使用它可以让你快速的 ...

  3. python 多线程示例

    原文链接:http://www.cnblogs.com/whatisfantasy/p/6440585.html 1 概念梳理: 1.1 线程 1.1.1 什么是线程 线程是操作系统能够进行运算调度的 ...

  4. Java 多线程示例

    /** * 多线程案例 两种方式 模拟买票程序(不考虑线程安全问题) */ public class ThreadTest { public static void main(String[] arg ...

  5. linux多线程示例

    #include <stdio.h> #include <unistd.h> #include <stdlib.h> #include <pthread.h& ...

  6. c#(asp.net) 多线程示例,用于同时处理多个任务

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...

  7. C# 多线程示例

    static void Main(string[] args) { Thread t1 = new Thread(new ThreadStart(TestMethod)); Thread t2 = n ...

  8. python 多线程 示例

    import threading import Queue q = Queue.Queue() from test import * def worker1(x, y): #假设耗时 执行完毕 大于三 ...

  9. 单线程与多线程的简单示例(以Windows服务发短信为示例)

    单线程示例: public delegate void SM(); SM sm = new SM(() =>    {                    while (true)       ...

随机推荐

  1. Ubuntu Server 配置网络

    ------------------ Ubuntu 14.04   x86_64 ----------------- 设置静态IP:vi /etc/network/interfaces. 然后再编辑 ...

  2. C++ 指向成员函数指针问题

    成员函数指针与常规指针不同,一个指向成员变量的指针并不指向一个内存位置.通常最清晰的做法是将指向数据成员的指针看作为一个偏移量. class ru_m { public: typedef int (r ...

  3. 建站随手记:installation python virtualenv mezzanine -1

    aliyun的网络访问有时会有问题,pip有问题的时候使用豆瓣源 pip install $apptoinstall$ -i http://pypi.douban.com/simple ------- ...

  4. 仿苹果导航菜单js问题

    通过鼠标与不同图片的间距比对图片做相应的放大缩小. <div id="box"> <img src="images/1.png" class= ...

  5. mybatis(4)_二级缓存深入_使用第三方ehcache配置二级缓存

    增删改对二级缓存的影响 1.增删改也会清空二级缓存 2.对于二级缓存的清空实质上是对value清空为null,key依然存在,并非将Entry<k,v>删除 3.从DB中进行select查 ...

  6. 神奇的margin之豆瓣豆瓣么么哒

    在经过周末的豆瓣主页和这周的豆瓣电影,表示网页什么的已经被我玩坏了. 老师在周末布置豆瓣主页,对于只学了四天的css和html的我,表示鸭梨山大. 最开始的两个小时只能做出一个连自己都看不下去的导航栏 ...

  7. ubuntu - 中文

    首先要从Ubuntu语言设置那里,把中文语言包安装上 打开/etc/environment 在下面添加如下两行 LANG="zh_CN.UTF-8″ LANGUAGE="zh_CN ...

  8. VC环境配置办法

    在VS工程中,添加c/c++工程中外部头文件及库的基本步骤:1.添加工程的头文件目录:工程---属性---配置属性---c/c++---常规---附加包含目录:加上头文件存放目录.2.添加文件引用的l ...

  9. CentOS7.1下JDK+Tomcat应用环境搭建

    最近由于项目的原因,需要测试Linux环境下的应用部署情况.选用了CentOS7.1版本+JDK1.6版本+Tomcat7.0版本进行搭建.其间各种折磨就不说了,随手把相关的注意事项和大概的步骤记录下 ...

  10. Bootstrap <基础三十>Well

    Well 是一种会引起内容凹陷显示或插图效果的容器 <div>.为了创建 Well,只需要简单地把内容放在带有 class .well 的 <div> 中即可.下面的实例演示了 ...