synchronized
synchronized (临界资源) {
// 访问临界资源的代码
}
上述代码的作用是给临界资源“加锁”,其他线程访问临界资源会被阻塞,目的是保证同一时间只有一个线程访问临界区。
wait
临界资源.wait();
某个线程调用了临界资源的wait方法后,该线程被阻塞,直到被其他线程唤醒才能继续执行。
notify
临界资源.notify();
某个线程执行该方法后,随机唤醒一个试图访问临界区但处于阻塞状态的线程。
完整代码 demo.java
import java.util.LinkedList;
import java.util.Queue;
public class demo {
Queue<Integer> 临界资源 = new LinkedList<>();
final int MAX = 10;
public static void main(String[] args) {
demo d = new demo();
生产者 producer = d.new 生产者();
消费者 consumer = d.new 消费者();
producer.start();
consumer.start();
}
class 生产者 extends Thread {
@Override
public void run() {
whi