【转】C#多线程示例
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#多线程示例的更多相关文章
- android 多线程 示例
public class MyRun implements Runnable { int count = 1000; @Override public void run() { while (true ...
- BMDThread控件动态创建多线程示例
http://www.cnblogs.com/railgunman/archive/2010/12/08/1900688.html BMDThread控件是一套相当成熟的线程控件,使用它可以让你快速的 ...
- python 多线程示例
原文链接:http://www.cnblogs.com/whatisfantasy/p/6440585.html 1 概念梳理: 1.1 线程 1.1.1 什么是线程 线程是操作系统能够进行运算调度的 ...
- Java 多线程示例
/** * 多线程案例 两种方式 模拟买票程序(不考虑线程安全问题) */ public class ThreadTest { public static void main(String[] arg ...
- linux多线程示例
#include <stdio.h> #include <unistd.h> #include <stdlib.h> #include <pthread.h& ...
- c#(asp.net) 多线程示例,用于同时处理多个任务
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...
- C# 多线程示例
static void Main(string[] args) { Thread t1 = new Thread(new ThreadStart(TestMethod)); Thread t2 = n ...
- python 多线程 示例
import threading import Queue q = Queue.Queue() from test import * def worker1(x, y): #假设耗时 执行完毕 大于三 ...
- 单线程与多线程的简单示例(以Windows服务发短信为示例)
单线程示例: public delegate void SM(); SM sm = new SM(() => { while (true) ...
随机推荐
- Python经典资料汇总
[专题推荐]Python系列英文原版电子书 http://down.51cto.com/zt/104 python简明教程(CHM) http://down.51cto.com/data/49213 ...
- IE订阅博客
思来想去,qq邮箱订阅似乎也不是很方便,尝试了下,点击“博客”中的“订阅”,博客竟然被ie订阅了,据介绍,博客中有更新,即时IE不打开,也会看到信息,这不,我来尝试了,RSS真是不试不知道,一试真方便 ...
- ABAP面试问题及侧重点
ABAP面试 1.简单的Report包括哪些东西 2.Dialog 逻辑流以及相应的处理内容 3.用过的几种增强方式:怎么找增强 4.接口和函数的使用,一般遇到自己不会的函数怎么处理 5.关联查询:I ...
- 微信 URL Scheme详细参数
weixin:// "weixin://dl/stickers""weixin://dl/games""weixin://dl/moments&quo ...
- 面向对象的高级编程&IO编程
1.给类对象绑定的函数,只对这个对象生效, 而对类绑定的对象, 所有的对象都可以调用. 栗子: def set_score(self, score): self.score = score s.set ...
- Python:函数
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 定义和调用 >>> def add(x,y): ... print('x=',x) #Python3必须加&quo ...
- 《Linux内核设计与实现》课本第五章学习笔记——20135203齐岳
<Linux内核设计与实现>课本第五章学习笔记 By20135203齐岳 与内核通信 用户空间进程和硬件设备之间通过系统调用来交互,其主要作用有三个. 为用户空间提供了硬件的抽象接口. 保 ...
- 二:基础概述netty
如果不了解netty的,可以百度下,netty社区现在也比较活跃. 现在所谓的大数据,flume,storm等底层都是netty. netty的性能模型: io模型---->异步非阻塞io ...
- POJ 3278 Catch That Cow
注:本人英语很渣,题目大意大多来自百度~=0= 题目大意 农民约翰需要抓住他的牛,他和他的牛在一条直线上(估计是一维生物),约翰在N (0 ≤ N ≤ 100,000)处,他的牛在 K (0 ≤ K ...
- java 将数据写进文件
/*每次只写入一行数据 只需要调用特定的方法即可.*/package com.second.File;import java.io.*;/** * Created by hasee on 2016/1 ...