本文中简单介绍一些java多线程相关的内容
1. 多线程基础
Java通过java.lang.Thread
类和java.util.concurrent
包提供了多线程支持。一个线程可以通过继承Thread类或实现Runnable接口来创建。
class MyThread extends Thread {
public void run() {
// 线程执行的代码
}
}
// 启动线程
MyThread myThread = new MyThread();
myThread.start();
2. 线程同步与互斥
在多线程环境下,可能会涉及到共享资源的读写问题。为了防止数据不一致或者产生竞态条件需要使用同步机制。Java提供了synchronized
关键字来实现同步:
class SharedResource {
private int count = 0;
public synchronized void increment() {
count++;
}
}
3. 线程间通信
Java提供了wait()
、notify()
和notifyAll()
等方法来实现线程的通通信
class SharedResource {
private boolean flag = false;
public synchronized void produce() {
while (flag) {
try {
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
// 生产操作
flag = true;
notify();
}
public synchronized void consume() {
while (!flag) {
try {
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
// 消费操作
flag = false;
notify();
}
}
4. 线程池的使用
Java的Executor
框架提供了线程池的支持:
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class ThreadPoolExample {
public static void main(String[] args) {
ExecutorService executorService = Executors.newFixedThreadPool(5);
for (int i = 0; i < 10; i++) {
executorService.execute(() -> {
// 线程执行的代码
});
}
executorService.shutdown();
}
}