using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading; //引入线程
using System.Diagnostics;
namespace ThreadConsoleApp
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("开始,线程死锁");
var lock1 = new object();
var lock2 = new object();
Thread t = new Thread(()=> DeadLock(lock1,lock2));
t.Name = "线程1";
//启动线程
t.Start();
lock (lock2)
{
Thread.Sleep(2000);
if (Monitor.TryEnter(lock1,TimeSpan.FromSeconds(5)))
{
Console.WriteLine("在规定时间内,请求资源");
}
else
{
Console.WriteLine("超时,无法获取资源");
}
}
new Thread(() => DeadLock(lock1, lock2)).Start();
Console.WriteLine("-----------------------------");
lock (lock2)
{
Thread.Sleep(1000);
Console.WriteLine(string.Format("死锁线程"));
lock(lock1)
{
Console.WriteLine("请求资源成功");
}
}
Console.Read();
}
/// <summary>
/// 死锁方法
/// </summary>
/// <param name="objLock1"></param>
/// <param name="objLock2"></param>
static void DeadLock(object objLock1,object objLock2)
{
lock (objLock1)
{
Thread.Sleep(2000);
lock (objLock2)
{
Console.WriteLine("死锁");
}
}
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading; //引入线程
using System.Diagnostics;
namespace ThreadConsoleApp
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("开始,异常处理");
Thread t = new Thread(FaultyThread);
t.Name = "线程1";
//启动线程
t.Start();
t.Join();
try
{
t = new Thread(ExpectThread);
t.Start();
}
catch (Exception ex)
{
Console.WriteLine("异常信息:" + ex.Message);
}
Console.Read();
}
static void ExpectThread()
{
Console.WriteLine(string.Format("异常处理"));
Thread.Sleep(2000);
throw new Exception("抛出异常");
}
static void FaultyThread()
{
try
{
Console.WriteLine(string