using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
namespace _5009_终止线程Interrupt_让线程死_
{
class KillingThreads
{
long fSum1 = 0;
long fSum2 = 2;
Thread Threading1;
Thread Threading2;
static void Main(string[] args)
{
KillingThreads myKillingThreads = new KillingThreads();
myKillingThreads.StartThread();
//cons
Console.ReadLine();
}
private void StartThread()
{
ThreadStart myThreadStart1 = new ThreadStart(FibonnacciSeries1);
Threading1 = new Thread(myThreadStart1);
Threading1.Name = "ThreadA";
ThreadStart myThreadStart2 = new ThreadStart(FibonnacciSeries2);
Threading2 = new Thread(new ThreadStart(myThreadStart2));
Threading2.Name = "ThreadB";
Threading1.Start(); //启动第1个线程
Threading2.Start(); //启动第2个线程
Threading1.Join();//暂停Threading1
Threading2.Join();//暂停Threading2
}
private void FibonnacciSeries1()
{
try
{
for (int i = 0; i < 20; i++)
{
lock (this)
{
Thread.Sleep(1000);
fSum1 += i;
if (i > 10)
Threading1.Interrupt();
Console.WriteLine(Thread.CurrentThread.Name +
" : " + " 目前总和为 = " + fSum1);
}
}
}
catch (ThreadInterruptedException)
{
// Console.WriteLine(Thread.CurrentThread.Name + " 终止");
}
}
private void FibonnacciSeries2()
{
try
{
lock (this)
{
for (int i = 0; i < 20; i++)
{
Thread.Sleep(1000);
fSum2 += i;
Console.WriteLine(Thread.CurrentThread.Name +
" : " + " 目前总和为 = " + fSum2);
}
}
}
catch (ThreadInterruptedException)
{
Console.WriteLine(Thread.CurrentThread.Name + " 终止");
}
}
}
}