知识点概述
在Java中,多线程编程是一种允许程序同时执行多个任务的技术。多线程可以提高程序的响应性和性能,特别是在处理耗时任务或需要并行处理的任务时。然而,多线程编程也带来了线程安全问题,即多个线程同时访问共享资源时可能导致数据不一致的问题。为了解决这个问题,Java提供了同步机制。
关键点
- 线程创建:可以通过继承`Thread`类或实现`Runnable`接口来创建线程。
- 线程同步:使用`synchronized`关键字可以确保同一时间只有一个线程能够访问某个方法或代码块。
- 线程通信:通过`wait()`、`notify()`和`notifyAll()`等方法,线程之间可以进行通信和协调。
示例代码
public class MultiThreadingExample {
// 共享资源
private int count = 0;
// 同步方法
public synchronized void increment() {
count++;
}
// 获取当前计数值
public int getCount() {
return count;
}
public static void main(String[] args) {
MultiThreadingExample example = new MultiThreadingExample();
// 创建多个线程
Thread thread1 = new Thread(() -> {
for (int i = 0; i {
for (int i = 0; i < 1000; i++) {
example.increment();
}
});
// 启动线程
thread1.start();
thread2.start();
// 等待线程执行完毕
try {
thread1.join();
thread2.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
// 输出最终计数值
System.out.println("Final count: " + example.getCount());
}
}
在这个示例中,我们创建了一个`MultiThreadingExample`类,其中包含一个共享资源`count`和一个同步方法`increment()`。两个线程分别调用`increment()`方法来增加`count`的值。由于`increment()`方法是同步的,因此同一时间只有一个线程能够执行该方法,从而保证了线程安全。最终,我们输出`count`的值,应该为2000。