返回

Java 日常知识点积累

见解分享

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 变量。