FlagComm.java Source code

Java tutorial

Introduction

Here is the source code for FlagComm.java

Source

public class FlagComm {
    public static void main(String args[]) {
        FlagSend s = new FlagSend();
        FlagRec r = new FlagRec(s);
        Thread st = new Thread(s);
        Thread rt = new Thread(r);
        rt.setDaemon(true);
        st.start();
        rt.start();
        try {
            while (s.isValid) {
                Thread.sleep(100);
            }
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

class FlagSend implements Runnable {
    volatile int theValue;

    volatile boolean isValid;

    public void run() {
        for (int i = 0; i < 5; i++) {
            while (isValid) {
                Thread.yield();
            }
            theValue = (int) (Math.random() * 256);
            System.out.println("sending " + theValue);
            isValid = true;
        }
    }
}

class FlagRec implements Runnable {
    FlagSend theSender;

    public FlagRec(FlagSend sender) {
        theSender = sender;
    }

    public void run() {
        while (true) {
            while (!theSender.isValid) {
                Thread.yield();
            }
            System.out.println("received " + theSender.theValue);
            theSender.isValid = false;
        }
    }
}