多线程:指在一个程序中同时运行多个线程。线程是程序执行的最小单位,多线程可以让程序在同一时间执行多个任务,提高程序的响应性和效率。
并发:是指多个任务在一段时间内同时发生,但不一定是真正的同时执行,可能是通过任务切换来实现看似同时进行。
异步:异步操作意味着启动一个操作后,程序不需要等待该操作完成就可以继续执行其他任务,操作完成时会通过回调或事件通知程序结果。
同步:同步操作则要求程序在执行一个操作时,必须等待该操作完成才能继续执行后续代码。
并行:并行强调的是真正在同一时刻同时执行多个任务,通常需要多核 CPU 或多个物理处理器的支持。
多线程:
using System;
using System.Threading;
class Program
{
static void Main()
{
Thread thread1 = new Thread(ThreadMethod1);
Thread thread2 = new Thread(ThreadMethod2);
thread1.Start();
thread2.Start();
}
static void ThreadMethod1()
{
Console.WriteLine("线程 1 正在执行");
}
static void ThreadMethod2()
{
Console.WriteLine("线程 2 正在执行");
}
}
并行:
using System;
using System.Threading;
class Program
{
static void Main()
{
Console.WriteLine("主线程开始");
Thread thread1 = new Thread(ConcurrentMethod1);
Thread thread2 = new Thread(ConcurrentMethod2);
thread1.Start();
thread2.Start();
Console.WriteLine("主线程继续执行其他操作");
}
static void ConcurrentMethod1()
{
Console.WriteLine("并发线程 1 执行");
}
static void ConcurrentMethod2()
{
Console.WriteLine("并发线程 2 执行");
}
}
异步:
using System;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
Console.WriteLine("主线程开始");
await AsyncMethod();
Console.WriteLine("主线程继续");
}
static async Task AsyncMethod()
{
Console.WriteLine("异步方法开始");
await Task.Delay(2000);
Console.WriteLine("异步方法结束");
}
}
同步:
using System;
class Program
{
static void Main()
{
Console.WriteLine("同步操作开始");
SyncMethod();
Console.WriteLine("同步操作结束");
}
static void SyncMethod()
{
Console.WriteLine("正在执行同步方法");
}
}
using System;
using System.Threading.Tasks;
class Program
{
static void Main()
{
Parallel.Invoke(
() => ParallelMethod1(),
() => ParallelMethod2()
);
}
static void ParallelMethod1()
{
Console.WriteLine("并行方法 1 执行");
}
static void ParallelMethod2()
{
Console.WriteLine("并行方法 2 执行");
}
}