test/jdk/jdk/jfr/api/consumer/recordingstream/EventProducer.java
author egahlin
Fri, 11 Oct 2019 20:17:18 +0200
branchJEP-349-branch
changeset 58569 5469bde803fe
child 58577 7e0f81f63890
permissions -rw-r--r--
Extract EventProducer and update TestRecursive
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
58569
5469bde803fe Extract EventProducer and update TestRecursive
egahlin
parents:
diff changeset
     1
package jdk.jfr.api.consumer.recordingstream;
5469bde803fe Extract EventProducer and update TestRecursive
egahlin
parents:
diff changeset
     2
5469bde803fe Extract EventProducer and update TestRecursive
egahlin
parents:
diff changeset
     3
import jdk.jfr.api.consumer.recordingstream.TestStart.StartEvent;
5469bde803fe Extract EventProducer and update TestRecursive
egahlin
parents:
diff changeset
     4
5469bde803fe Extract EventProducer and update TestRecursive
egahlin
parents:
diff changeset
     5
class EventProducer extends Thread {
5469bde803fe Extract EventProducer and update TestRecursive
egahlin
parents:
diff changeset
     6
    private final Object lock = new Object();
5469bde803fe Extract EventProducer and update TestRecursive
egahlin
parents:
diff changeset
     7
    private boolean killed = false;
5469bde803fe Extract EventProducer and update TestRecursive
egahlin
parents:
diff changeset
     8
    public void run() {
5469bde803fe Extract EventProducer and update TestRecursive
egahlin
parents:
diff changeset
     9
        while (true) {
5469bde803fe Extract EventProducer and update TestRecursive
egahlin
parents:
diff changeset
    10
            StartEvent s = new StartEvent();
5469bde803fe Extract EventProducer and update TestRecursive
egahlin
parents:
diff changeset
    11
            s.commit();
5469bde803fe Extract EventProducer and update TestRecursive
egahlin
parents:
diff changeset
    12
            synchronized (lock) {
5469bde803fe Extract EventProducer and update TestRecursive
egahlin
parents:
diff changeset
    13
                try {
5469bde803fe Extract EventProducer and update TestRecursive
egahlin
parents:
diff changeset
    14
                    lock.wait(10);
5469bde803fe Extract EventProducer and update TestRecursive
egahlin
parents:
diff changeset
    15
                    if (killed) {
5469bde803fe Extract EventProducer and update TestRecursive
egahlin
parents:
diff changeset
    16
                        return; // end thread
5469bde803fe Extract EventProducer and update TestRecursive
egahlin
parents:
diff changeset
    17
                    }
5469bde803fe Extract EventProducer and update TestRecursive
egahlin
parents:
diff changeset
    18
                } catch (InterruptedException e) {
5469bde803fe Extract EventProducer and update TestRecursive
egahlin
parents:
diff changeset
    19
                    // ignore
5469bde803fe Extract EventProducer and update TestRecursive
egahlin
parents:
diff changeset
    20
                }
5469bde803fe Extract EventProducer and update TestRecursive
egahlin
parents:
diff changeset
    21
            }
5469bde803fe Extract EventProducer and update TestRecursive
egahlin
parents:
diff changeset
    22
        }
5469bde803fe Extract EventProducer and update TestRecursive
egahlin
parents:
diff changeset
    23
    }
5469bde803fe Extract EventProducer and update TestRecursive
egahlin
parents:
diff changeset
    24
    public void kill()  {
5469bde803fe Extract EventProducer and update TestRecursive
egahlin
parents:
diff changeset
    25
        synchronized (lock) {
5469bde803fe Extract EventProducer and update TestRecursive
egahlin
parents:
diff changeset
    26
            this.killed = true;
5469bde803fe Extract EventProducer and update TestRecursive
egahlin
parents:
diff changeset
    27
            lock.notifyAll();
5469bde803fe Extract EventProducer and update TestRecursive
egahlin
parents:
diff changeset
    28
            try {
5469bde803fe Extract EventProducer and update TestRecursive
egahlin
parents:
diff changeset
    29
                join();
5469bde803fe Extract EventProducer and update TestRecursive
egahlin
parents:
diff changeset
    30
            } catch (InterruptedException e) {
5469bde803fe Extract EventProducer and update TestRecursive
egahlin
parents:
diff changeset
    31
            }
5469bde803fe Extract EventProducer and update TestRecursive
egahlin
parents:
diff changeset
    32
        }
5469bde803fe Extract EventProducer and update TestRecursive
egahlin
parents:
diff changeset
    33
    }
5469bde803fe Extract EventProducer and update TestRecursive
egahlin
parents:
diff changeset
    34
}