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. 如何实现自定义的android WebView错误页

    一般来说,可能第一时间想到的是自定义一个html来替代webview内置的异常页面.  但是实际操作时,这种方法比较困难. 这里介绍一个简单的替代方案,希望能有所帮助. 可以采用嵌套layout的方式 ...

  2. 面向对象cookie增删查

    <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...

  3. Codeforces Round #372 (Div. 2) C. Plus and Square Root

    题目链接 分析:这题都过了2000了,应该很简单..写这篇只是为了凑篇数= = 假设在第级的时候开方过后的数为,是第级的系数.那么 - 显然,最小的情况应该就是, 化简一下公式,在的情况下应该是,注意 ...

  4. SQL Server附加数据库问题

    SQL Server附加数据库时,遇到如下问题:“如果升级全文目录,请单加“添加目录”,然后找到它并选择它.基于全文升级选项,全文索引将为“已导入”.” 解决方法: 选择数据库文件所在目录,右键-&g ...

  5. java selenium (五) 元素定位大全

    页面元素定位是自动化中最重要的事情, selenium Webdriver 提供了很多种元素定位的方法.  测试人员应该熟练掌握各种定位方法. 使用最简单,最稳定的定位方法. 阅读目录 自动化测试步骤 ...

  6. Tomcat 启动项目报错 java.lang.OutOfMemoryError: Java heap space

    近日使用myeclipse 部署web项目,启动tomcat时报错: SEVERE: Error waiting for multi-thread deployment of directories ...

  7. Python函数参数学习笔记

    1.Python中函数参数类型可分为五种: f(x):x为位置参数: f(x,n=2):n为默认参数,调用时可以省略参数n,如f(5); f(*args):*args表示把args这个list或tup ...

  8. css3实现逐渐变大的圆填充div背景的效果

    手机端现在的一些应用会运用上这样一个效果,就是duang的一下出现一个圆变大直到填充整个div,动感十足. 想到css3的scale属性,就自己来实现一下. <div id="bcd& ...

  9. sql 多行转换为一行

    select 字段1, [val]=( select 字段2 +',' from 表名 as b where b.字段1 = a.字段1  for xml path('')) from 表名 as a ...

  10. 通过淘宝IP地址库获取IP位置

    地址:http://ip.taobao.com/ 提供的服务包括: 1. 根据用户提供的IP地址,快速查询出该IP地址所在的地理信息和地理相关的信息,包括国家.省.市和运营商. 2. 用户可以根据自己 ...