有时候,我们希望手动结束一个线程。比如说,当客户端满足某种条件,让线程就此结束。如何设计呢?
线程间肯定要共享数据,假设把共享数据默认值设置成true,客户端线程在满足某种条件时把共享数据设置成false。而另外一个线程,如果共享数据一直是true,它就一直执行程序,直到共享数据为false,该线程就结束。
class Program
{
private static bool cancel = false;
static void Main(string[] args)
{
Thread t = new Thread(SayHello);
t.Start();
Console.WriteLine("按回车键取消");
Console.ReadLine();
cancel = true;
t.Join();
Console.WriteLine("结束了");
Console.ReadKey();
}
static void SayHello()
{
while (!cancel)
{
Console.WriteLine("线程#" + Thread.CurrentThread.ManagedThreadId + "还活着,Hello~");
Thread.Sleep(1000);
}
}
}
○ 2个线程共享类的静态字段
○ 当按回车键后,就把静态字段cancel设置成false
○ 当把cancel设置成false后,就不满足线程t的循环条件,线程t结束循环
○ t.Join()方法保证线程t执行完后,再执行客户端线程
线程系列包括: