-
synchronized关键字:synchronized关键字用于实现互斥访问共享资源的同步机制。它可以应用于方法或代码块。当一个线程进入synchronized代码块时,它将获得锁,其他线程必须等待锁释放才能执行该代码块。synchronized关键字确保了同一时间只有一个线程可以执行被保护的代码块,从而避免了数据竞争和并发问题。
示例代码如下所示:
public synchronized void synchronizedMethod() { // 互斥访问的代码 }
-
wait()方法和notify()方法:wait()和notify()方法是Object类中定义的方法,用于实现线程之间的协作和同步。这两个方法必须在synchronized代码块或synchronized方法中使用。
-
wait()方法:当一个线程调用wait()方法时,它会释放对象的锁,并进入等待状态,直到其他线程调用了该对象的notify()方法或notifyAll()方法来唤醒等待的线程。
示例代码如下所示:
synchronized (sharedObject) { while (!condition) { sharedObject.wait(); } // 执行其他操作 }
-
notify()方法和notifyAll()方法:当一个线程调用notify()方法或notifyAll()方法时,它会通知等待在同一个对象上的其他线程。被唤醒的线程将重新尝试获取对象的锁,并继续执行。
示例代码如下所示:
synchronized (sharedObject) { condition = true; sharedObject.notify(); // 或者 sharedObject.notifyAll() }
-
这些关键字和方法提供了Java中基本的线程同步机制,用于互斥访问共享资源和实现线程之间的协作。开发者可以根据具体的需求选择适合的方式来实现线程的同步和互斥,以确保多线程程序的正确性和可靠性。
标签:java,synchronized,代码,关键字,线程,notify,sharedObject,方法 From: https://www.cnblogs.com/zjsdbk/p/17935865.html