SyncFlag.java Source code

Java tutorial

Introduction

Here is the source code for SyncFlag.java

Source

/*
 * Output:
Calling wait
Calling notifyAll
Done
Done
    
    
 */

class SyncFlag {
    boolean flag;

    synchronized void k1() {
        if (flag == false) {
            flag = true;
            try {
                System.out.println("Calling wait");
                wait();
            } catch (Exception e) {
                e.printStackTrace();
            }
        } else {
            flag = false;
            System.out.println("Calling notifyAll");
            notifyAll();
        }
    }
}

class MyThread extends Thread {
    SyncFlag flag;

    MyThread(SyncFlag k) {
        this.flag = k;
    }

    public void run() {
        flag.k1();
        System.out.println("Done");
    }
}

public class MainClass {

    public static void main(String args[]) {

        SyncFlag k = new SyncFlag();
        new MyThread(k).start();
        new MyThread(k).start();
    }
}