转载自 wangqingpei557 的BLOG http://wangqingpei557.blog.51cto.com/1009349/650845
- using System;
- using System.Collections.Generic;
- using System.Text;
- using System.Threading;
- using System.Runtime.Remoting;
- using System.Runtime.Remoting.Contexts;
- namespace ConsoleApplication1.多线程和并发管理
- {
- public class MyClass
- {
- public void ShowMessage()
- {
- Thread currentthread = Thread.CurrentThread;
- Console.WriteLine(currentthread.Name + currentthread.ManagedThreadId);
- }
- }
- }
- namespace ConsoleApplication1.多线程和并发管理
- {
- public static class Program
- {
- static void Main(string[] args)
- {
- Thread currentthread = Thread.CurrentThread;
- currentthread.Name = "主线程";
- Console.WriteLine(currentthread.Name + currentthread.ManagedThreadId);
- MyClass myclass = new MyClass();
- ThreadStart start = new ThreadStart(myclass.ShowMessage);
- Thread thread = new Thread(start);
- thread.Name = "子线程";
- thread.Start();
- Thread.Sleep(1000);//休眠,线程切换
- Console.WriteLine(currentthread.Name + currentthread.ManagedThreadId);
- Console.Read();
- }
- }
- }
- Thread currentthread = Thread.CurrentThread;
- currentthread.Name = "主线程";
- Console.WriteLine(currentthread.Name + currentthread.ManagedThreadId);
- MyClass myclass = new MyClass();
- ThreadStart start = new ThreadStart(myclass.ShowMessage);
- Thread thread = new Thread(start);
- thread.Name = "子线程";
- thread.Start();
- thread.Join();//阻塞子线程thread线程,直到子线程thread执行结束
- Console.WriteLine(currentthread.Name + currentthread.ManagedThreadId);
- Console.Read();
- public void DoWork()
- {
- try
- {
- int i = 0;
- while (true)
- {
- Console.WriteLine(Thread.CurrentThread.ManagedThreadId + "|" + i++);
- if (i == 100)
- {
- Console.WriteLine("---------------------------------------------");
- Console.Read();
- break;//退出当前线程执行,尽量不要用Abort结束
- }
- }
- }
- catch (ThreadAbortException err)
- {
- Console.WriteLine(err.Message + "11");
- }
- }
- Thread currentthread = Thread.CurrentThread;
- Console.WriteLine(currentthread.Name + currentthread.ManagedThreadId);
- MyClass myclass = new MyClass();
- ThreadStart start = new ThreadStart(myclass.DoWork);
- Thread thread = new Thread(start);
- thread.Start();
- Thread.Sleep(5000);
- Console.WriteLine(currentthread.Name + currentthread.ManagedThreadId + "是否终止子线程");
- thread.Abort();
- Console.Read();
- public void DoWork()
- {
- try
- {
- int i = 0;
- while (true)
- {
- Console.WriteLine(Thread.CurrentThread.ManagedThreadId + "|" + i++);
- //if (i == 100)
- //{
- // Console.WriteLine("---------------------------------------------");
- // Console.Read();
- // break;//退出当前线程执行,尽量不要用Abort结束
- //}
- }
- }
- catch (ThreadAbortException err)
- {
- Console.WriteLine(err.Message + "11");
- }
- Thread currentthread = Thread.CurrentThread;
- Console.WriteLine(currentthread.Name + currentthread.ManagedThreadId);
- MyClass myclass = new MyClass();
- ThreadStart start = new ThreadStart(myclass.DoWork);
- Thread thread = new Thread(start);
- thread.IsBackground = true;
- thread.Start();
- Thread.Sleep(2000);
- Console.WriteLine(currentthread.Name + currentthread.ManagedThreadId);