test/jdk/jdk/jfr/api/consumer/recordingstream/EventProducer.java
author mgronlun
Sun, 13 Oct 2019 12:36:51 +0200
branchJEP-349-branch
changeset 58577 7e0f81f63890
parent 58569 5469bde803fe
child 58841 12b4063e357f
permissions -rw-r--r--
Fix EventProducer kill and TestRecursive

package jdk.jfr.api.consumer.recordingstream;

import jdk.jfr.api.consumer.recordingstream.TestStart.StartEvent;

class EventProducer extends Thread {
    private final Object lock = new Object();
    private boolean killed = false;
    public void run() {
        while (true) {
            StartEvent s = new StartEvent();
            s.commit();
            synchronized (lock) {
                try {
                    lock.wait(10);
                    if (killed) {
                        return; // end thread
                    }
                } catch (InterruptedException e) {
                    // ignore
                }
            }
        }
    }
    public void kill()  {
        synchronized (lock) {
            this.killed = true;
            lock.notifyAll();
        }
        try {
            join();
        } catch (InterruptedException e) {
        }
    }
}