Java同步机制:synchronized,wait,notify

/** * 假设A,B两个线程同时运行。但A需要某项前置条件必须满足(data数组装满)后才可以正常运转。 这里让B线程去为满足A的条件去干活。 */public class SYN {int[] data = new int[100];final Object lock = new Object();public SYN() {new Thread(new A()).start();new Thread(new B()).start();}privateclass A implements Runnable {public void run() {/*** 因为A需要前置条件(data数据装满)必须得到满足才能运行,所以,在A需要的data数组不满时,先让A等待(实际上是等待B。* A在等待的同时;B在干活,B装载data数组)*/synchronized (lock) {try {System.out.println("A开始等待…");lock.wait();System.out.println("A结束等待!");System.out.println("A前置条件满足,开始做想做的事…");} catch (Exception e) {e.printStackTrace();}}}}privateclass B implements Runnable {public void run() {synchronized (lock) {System.out.println("B开始操作…");/*** 这里假设B线程对数组data的数据装载需要费时的操作(如从网络下载)。B先于A,把A需要的数据data装载完毕,,然后通知A*/for (int i = 0; i < 100; i++) {data[i] = i;try {Thread.sleep(10);} catch (Exception e) {}}System.out.println("B结束操作!");lock.notify();/** 通知A */}}}public static void main(String[] args) {new SYN();}}

却只能这样。只有对爱的人,我们才会斤斤计较,锱铢必较。

Java同步机制:synchronized,wait,notify

相关文章:

你感兴趣的文章:

标签云: