Java多线程技术教程
掌握Java中的多线程编程,提升并发处理能力
一、多线程基本概念
多线程是Java并发编程的重要概念之一,它允许一个应用程序同时执行多个任务。多线程可以显著提高应用程序的响应性和吞吐量。
二、线程创建方式
Java中创建线程主要有三种方式:继承Thread类、实现Runnable接口和使用Callable及Future接口。
2.1 继承Thread类
通过继承Thread类并重写其run方法,可以创建一个新的线程。
public class MyThread extends Thread {
@Override
public void run() {
System.out.println("Thread is running");
}
public static void main(String[] args) {
MyThread myThread = new MyThread();
myThread.start();
}
}
2.2 实现Runnable接口
实现Runnable接口并将其实例传递给Thread对象,可以避免Java单继承的局限。
public class MyRunnable implements Runnable {
@Override
public void run() {
System.out.println("Runnable is running");
}
public static void main(String[] args) {
Thread thread = new Thread(new MyRunnable());
thread.start();
}
}
2.3 使用Callable及Future接口
Callable接口类似于Runnable,但它可以返回结果或抛出异常。Future接口用于获取Callable任务的结果。
import java.util.concurrent.*;
public class MyCallable implements Callable {
@Override
public String call() throws Exception {
return "Callable result";
}
public static void main(String[] args) throws ExecutionException, InterruptedException {
ExecutorService executor = Executors.newSingleThreadExecutor();
Future future = executor.submit(new MyCallable());
System.out.println("Future result: " + future.get());
executor.shutdown();
}
}
三、案例讲解:多线程实现计数器
下面是一个简单的多线程计数器示例,展示了如何使用多个线程来更新一个共享变量。
public class Counter {
private int count = 0;
public synchronized void increment() {
count++;
}
public synchronized int getCount() {
return count;
}
public static void main(String[] args) throws InterruptedException {
Counter counter = new Counter();
Thread[] threads = new Thread[10];
for (int i = 0; i {
for (int j = 0; j < 1000; j++) {
counter.increment();
}
});
threads[i].start();
}
for (Thread thread : threads) {
thread.join();
}
System.out.println("Final count: " + counter.getCount());
}
}
在这个示例中,我们创建了一个Counter类,其中包含一个同步的increment方法和一个getCount方法。然后,我们创建了10个线程,每个线程对计数器进行1000次递增操作。最后,我们等待所有线程完成并输出最终计数结果。