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
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();
58577
7e0f81f63890 Fix EventProducer kill and TestRecursive
mgronlun
parents: 58569
diff changeset
    28
        }
7e0f81f63890 Fix EventProducer kill and TestRecursive
mgronlun
parents: 58569
diff changeset
    29
        try {
7e0f81f63890 Fix EventProducer kill and TestRecursive
mgronlun
parents: 58569
diff changeset
    30
            join();
7e0f81f63890 Fix EventProducer kill and TestRecursive
mgronlun
parents: 58569
diff changeset
    31
        } catch (InterruptedException e) {
7e0f81f63890 Fix EventProducer kill and TestRecursive
mgronlun
parents: 58569
diff changeset
    32
        }
58569
5469bde803fe Extract EventProducer and update TestRecursive
egahlin
parents:
diff changeset
    33
    }
5469bde803fe Extract EventProducer and update TestRecursive
egahlin
parents:
diff changeset
    34
}