Java 多线程并发编程攻略
Java 多线程并发编程是 Java 开发中必不可少的技能,能够充分利用多核 CPU 在同一时间处理多个任务,提高程序的并发性和效率。本文将为大家介绍 Java 多线程并发编程的攻略,包括线程的创建、同步、互斥、线程池等知识点。
线程的创建
Java 中创建线程有两种方式,一种是继承 Thread
类,另一种是实现 Runnable
接口。
继承 Thread
类
public class MyThread extends Thread {
@Override
public void run() {
// 重写 run() 方法,线程执行的代码放在这里
}
}
实现 Runnable
接口
public class MyRunnable implements Runnable {
@Override
public void run() {
// 重写 run() 方法,线程执行的代码放在这里
}
}
线程同步与互斥
多个线程对同一个数据进行操作会存在线程安全问题,需要进行同步与互斥控制。
synchronized 同步
public synchronized void add() {
// 同步代码块
}
ReentrantLock 互斥
private Lock lock = new ReentrantLock();
public void add() {
lock.lock(); //加锁
try {
// 同步代码块
} finally {
lock.unlock(); //解锁
}
}
线程池
Java 中的线程池可以有效地管理线程,避免频繁创建和销毁线程带来的开销,同时可以提高线程的复用性和效率。
创建线程池
ExecutorService executorService = Executors.newFixedThreadPool(10);
其中 newFixedThreadPool()
方法可以创建指定数量的线程池。
向线程池提交任务
executorService.submit(new Runnable() {
@Override
public void run() {
// 线程执行的任务
}
});
使用 submit()
方法向线程池中提交任务。
示例说明
示例一:线程创建
public class MyThread extends Thread {
@Override
public void run() {
for (int i = 1; i <= 10; i++) {
System.out.println(getName() + ": " + i);
}
}
}
public class Main {
public static void main(String[] args) {
MyThread thread1 = new MyThread();
thread1.start();
MyThread thread2 = new MyThread();
thread2.start();
}
}
上述示例中使用继承 Thread
来创建线程,并重写 run()
方法来定义线程执行的任务。在 main()
方法中分别创建了两个线程并启动。
示例二:线程池
public class Main {
public static void main(String[] args) {
ExecutorService executorService = Executors.newFixedThreadPool(10);
for (int i = 0; i < 20; i++) {
executorService.submit(new Runnable() {
@Override
public void run() {
System.out.println("线程 " + Thread.currentThread().getName() + " 正在执行任务");
}
});
}
executorService.shutdown();
}
}
上述示例中使用线程池的方式来创建线程,并向线程池中提交任务。使用 ExecutorService
接口的 submit()
方法提交任务,通过 shutdown()
方法来关闭线程池。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java 多线程并发编程_动力节点Java学院整理 - Python技术站