JAVA代码:
1. 基本线程创建
// 使用Thread类
class MyThread extends Thread {
public void run() {
System.out.println("Thread running");
}
}
MyThread t = new MyThread();
t.start();
// 使用Runnable接口
class MyRunnable implements Runnable {
public void run() {
System.out.println("Runnable running");
}
}
Thread t = new Thread(new MyRunnable());
t.start();
// 使用Callable接口
Callable<Integer> task = () -> {
return 123;
};
ExecutorService executor = Executors.newFixedThreadPool(1);
Future<Integer> future = executor.submit(task);
System.out.println(future.get());
2、线程同步
// 使用synchronized
synchronized(obj) {
// synchronized block
}
// 使用ReentrantLock
Lock lock = new ReentrantLock();
lock.lock();
try {
// critical section
} finally {
lock.unlock();
}
3、高级并发
// 使用ExecutorService
ExecutorService executor = Executors.newFixedThreadPool(10);
executor.submit(() -> {
System.out.println("Task running");
});
executor.shutdown();
.net代码
1. 基本线程创建
// 使用Thread类
Thread t = new Thread(() => {
Console.WriteLine("Thread running");
});
t.Start();
// 使用Task并行库
Task.Factory.StartNew(() => {
Console.WriteLine("Task running");
});
// 使用Async/Await
public async Task ExampleMethodAsync() {
await Task.Run(() => {
Console.WriteLine("Async Task running");
});
}
2. 线程同步
// 使用lock
lock(obj) {
// critical section
}
// 使用Monitor
Monitor.Enter(obj);
try {
// critical section
} finally {
Monitor.Exit(obj);
}
3、高级并发
// 使用TPL的并行编程功能
Parallel.For(0, 10, i =>
{
Console.WriteLine("Parallel loop iteration: " + i);
});
可以看出 C# 的async/await关键词使得异步编程更加直观和易读,而Java在这方面相对复杂一些,通常需要结合Future和ExecutorService来实现。