1. 使用 Task 执行多线程任务
- class Program
- {
- static void Main(string[] args)
- {
- Task task1 = new Task(() => {
- Console.WriteLine("线程ID:{0},开始执行", Thread.CurrentThread.ManagedThreadId);
- Stopwatch stw = new Stopwatch();
- stw.Start();
- long result = SumNumbers(10000000);
- stw.Stop();
- Console.WriteLine("线程ID:{0},执行完成,执行结果:{1},执行用时{2},", Thread.CurrentThread.ManagedThreadId, result, stw.ElapsedMilliseconds);
- });
- Task task2 = new Task(() => {
- Console.WriteLine("线程ID:{0},开始执行", Thread.CurrentThread.ManagedThreadId);
- Stopwatch stw = new Stopwatch();
- stw.Start();
- long result = SumNumbers(20000000);
- stw.Stop();
- Console.WriteLine("线程ID:{0},执行完成,执行结果:{1},执行用时{2},", Thread.CurrentThread.ManagedThreadId, result, stw.ElapsedMilliseconds);
- });
- Task task3 = new Task(() => {
- Console.WriteLine("线程ID:{0},开始执行", Thread.CurrentThread.ManagedThreadId);
- Stopwatch stw = new Stopwatch();
- stw.Start();
- long result = SumNumbers(15000000);
- stw.Stop();
- Console.WriteLine("线程ID:{0},执行完成,执行结果:{1},执行用时{2},", Thread.CurrentThread.ManagedThreadId, result, stw.ElapsedMilliseconds);
- });
- task1.Start();
- task2.Start();
- task3.Start();
- Console.ReadKey();
- }
- static long SumNumbers(int count)
- {
- long sum = 0;
- for (int i = 0; i < count; i++)
- {
- sum += i;
- }
- Thread.Sleep(3000);
- return sum;
- }
- }
2. 等待Task多线程任务执行完成
- class Program
- {
- static void Main(string[] args)
- {
- Task task1 = new Task(() => {
- Console.WriteLine("线程ID:{0},开始执行", Thread.CurrentThread.ManagedThreadId);
- Stopwatch stw = new Stopwatch();
- stw.Start();
- long result = SumNumbers(10000000);
- stw.Stop();
- Console.WriteLine("线程ID:{0},执行完成,执行结果:{1},执行用时{2},", Thread.CurrentThread.ManagedThreadId, result, stw.ElapsedMilliseconds);
- });
- Task task2 = new Task(() => {
- Console.WriteLine("线程ID:{0},开始执行", Thread.CurrentThread.ManagedThreadId);
- Stopwatch stw = new Stopwatch();
- stw.Start();
- long result = SumNumbers(20000000);
- stw.Stop();
- Console.WriteLine("线程ID:{0},执行完成,执行结果:{1},执行用时{2},", Thread.CurrentThread.ManagedThreadId, result, stw.ElapsedMilliseconds);
- });
- Task task3 = new Task(() => {
- Console.WriteLine("线程ID:{0},开始执行", Thread.CurrentThread.ManagedThreadId);
- Stopwatch stw = new Stopwatch();
- stw.Start();
- long result = SumNumbers(15000000);
- stw.Stop();
- Console.WriteLine("线程ID:{0},执行完成,执行结果:{1},执行用时{2},", Thread.CurrentThread.ManagedThreadId, result, stw.ElapsedMilliseconds);
- });
- List<Task> listTask = new List<Task>();
- listTask.Add(task1);
- listTask.Add(task2);
- listTask.Add(task3);
- task1.Start();
- task2.Start();
- task3.Start();
- Task.WaitAll(listTask.ToArray());
- Console.WriteLine("所有线程执行完成。");
- Console.ReadKey();
- }
- static long SumNumbers(int count)
- {
- long sum = 0;
- for (int i = 0; i < count; i++)
- {
- sum += i;
- }
- Thread.Sleep(3000);
- return sum;
- }
- }