若干线程不能正常退出的例子

代码1:
  1. //在finally里无限执行
  2.         static void Main(string[] args)
  3.         {
  4.             Thread t = new Thread(new ThreadStart(th));
  5.             t.Start();
  6.             Thread.Sleep(1000);
  7.             t.Abort();
  8.             Thread.Sleep(1000);
  9.         }
  10.         static void th()
  11.         {
  12.             int i = 1;
  13.             try
  14.             {
  15.                 while(true)
  16.                 {
  17.                     Console.WriteLine(i++);
  18.                     Thread.Sleep(100);
  19.                 }
  20.             }
  21.             catch(ThreadAbortException)
  22.             {
  23.             }
  24.             finally
  25.             {
  26.                 while(true)
  27.                 {
  28.                     Console.WriteLine(i++);
  29.                     Thread.Sleep(100);
  30.                 }
  31.             }
  32.         }

代码2:
  1. //Thread.ResetAbort() 取消Abort
  2.         static void Main(string[] args)
  3.         {
  4.             Thread t = new Thread(new ThreadStart(th));
  5.             t.Start();
  6.             Thread.Sleep(1000);
  7.             t.Abort(1);
  8.             Thread.Sleep(1000);
  9.         }
  10.         static void th()
  11.         {
  12.             int i = 1;
  13.             while(true)
  14.                 try
  15.                 {
  16.                     Console.WriteLine(i++);
  17.                     Thread.Sleep(100);
  18.                 }
  19.                 catch(ThreadAbortException)
  20.                 {
  21.                     Thread.ResetAbort();
  22.                 }
  23.         }


代码3:
  1. //等待自己结束,而自己又不可能结束。
  2.         static void Main(string[] args)
  3.         {
  4.             Thread t = Thread.CurrentThread;
  5.             Console.WriteLine("Join...");
  6.             t.Join();
  7.         }

代码4:
  1. //死锁
  2.     class Program
  3.     {
  4.         static void Main(string[] args)
  5.         {
  6.             Program p = new Program();
  7.             new Thread(new ThreadStart(p.th1)).Start();
  8.             new Thread(new ThreadStart(p.th2)).Start();
  9.         }
  10.         void th1()
  11.         {
  12.             lock(this)
  13.                 Monitor.Wait(this);
  14.         }
  15.         void th2()
  16.         {
  17.             lock(this)
  18.                 Monitor.Wait(this);
  19.         }
  20.     }

代码5:

代码6:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值