线程的创建,异常处理
//C#线程
public class thread
{
public void th()
{
//创建
var task = new Task(() =>
{
for (int i = 0; i < 5000; i++)
{
System.Console.WriteLine("++++" + i);
}
});
task.Start(); //只是开始,不一定要执行完
// 线程异常处理1
task.ContinueWith((t) => { Console.WriteLine(task.Exception); }, TaskContinuationOptions.OnlyOnFaulted);
// 线程异常处理2
try
{
task.Wait(); //等待执行完
}
catch (Exception s)
{
System.Console.WriteLine(s);
}
}
并行执行,效率更高
public void thread2()
{
var list =new List<int>();
for(int i =0;i<5000;i++){
list.Add(i);
}
//并行执行,效率更高
Parallel.ForEach(list, i => i++);
list.AsParallel().ForAll(i => i++);
}
线程加锁,lock安全,效率低,有原子性
//线程加锁,lock安全,效率低,有原子性
private static readonly object syn = new object();
public void thread3()
{
int j=0;
var th1 = new Task(() =>
{
for (int i = 0; i < 5000; i++)
{
lock (syn)
{
j++;
}
}
});
var th2 = new Task(() =>
{
for (int i = 0; i < 5000; i++)
{
lock (syn)
{
j--;
}
}
});
th1.Start();
th2.Start();
Task.WaitAll(th1, th2);
}
}