java如何使用多线程
多线程基础概念
Java多线程允许程序同时执行多个任务,提高CPU利用率。每个线程独立运行,共享进程资源(如内存、文件句柄)。
创建线程的两种方式
继承Thread类
class MyThread extends Thread {
public void run() {
System.out.println("Thread running");
}
}
// 启动线程
new MyThread().start();
实现Runnable接口
class MyRunnable implements Runnable {
public void run() {
System.out.println("Runnable running");
}
}
// 启动线程
new Thread(new MyRunnable()).start();
线程池的使用
Java推荐使用线程池管理线程资源:

ExecutorService executor = Executors.newFixedThreadPool(5);
executor.execute(() -> {
System.out.println("Task executed by thread pool");
});
executor.shutdown();
线程同步机制
synchronized关键字
public synchronized void syncMethod() {
// 同步代码块
}
ReentrantLock
Lock lock = new ReentrantLock();
lock.lock();
try {
// 临界区代码
} finally {
lock.unlock();
}
线程间通信
wait/notify机制

synchronized(lockObj) {
while(conditionNotMet) {
lockObj.wait();
}
// 处理逻辑
lockObj.notifyAll();
}
原子操作类
Java提供原子类保证线程安全:
AtomicInteger counter = new AtomicInteger(0);
counter.incrementAndGet();
线程状态管理
通过Thread.State枚举可获取线程状态:
- NEW
- RUNNABLE
- BLOCKED
- WAITING
- TIMED_WAITING
- TERMINATED
最佳实践
避免直接创建线程,优先使用线程池 减少同步块范围,使用并发集合类 正确处理线程中断异常 考虑使用CompletableFuture进行异步编程
常见问题处理
死锁预防:按固定顺序获取锁 内存可见性:使用volatile关键字 线程泄漏:确保线程池正确关闭





