Java 日常知识点积累
2024-01-24 12:04:15
1. 多线程
多线程是指一个程序中存在多个执行流,这些执行流可以并发执行。Java 中通过 Thread 类来实现多线程,Thread 类提供了 start() 方法来启动线程,run() 方法来定义线程的执行逻辑。
2. synchronized
synchronized 是 Java 中的一个,用于实现线程同步。当一个线程执行 synchronized 方法或代码块时,其他线程不能同时执行该方法或代码块。synchronized 可以用来保护共享数据,防止多个线程同时访问和修改共享数据,从而导致数据不一致。
3. wait()
wait() 是 Object 类中的一个方法,用于让当前线程等待其他线程通知。当一个线程调用 wait() 方法时,该线程会进入等待状态,直到其他线程调用 notify() 或 notifyAll() 方法通知该线程继续执行。
4. notify()
notify() 是 Object 类中的一个方法,用于通知一个正在等待的线程继续执行。当一个线程调用 notify() 方法时,它会唤醒一个正在等待该线程的线程。
5. notifyAll()
notifyAll() 是 Object 类中的一个方法,用于通知所有正在等待的线程继续执行。当一个线程调用 notifyAll() 方法时,它会唤醒所有正在等待该线程的线程。
6. 锁
锁是一种用于控制对共享资源的访问的机制。在 Java 中,锁可以分为两类:隐式锁和显示锁。隐式锁是 Java 虚拟机自动管理的锁,而显示锁是程序员显式创建和管理的锁。
7. 实例
public class Test {
private int count = 0;
public synchronized void increment() {
count++;
}
public static void main(String[] args) {
Test test = new Test();
Thread thread1 = new Thread(() -> {
for (int i = 0; i < 10000; i++) {
test.increment();
}
});
Thread thread2 = new Thread(() -> {
for (int i = 0; i < 10000; i++) {
test.increment();
}
});
thread1.start();
thread2.start();
try {
thread1.join();
thread2.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("count = " + test.count);
}
}
在这个例子中,我们使用 synchronized 关键字来保护 count 变量,确保两个线程不会同时访问和修改 count 变量。