mirror of
https://github.com/corda/corda.git
synced 2025-06-13 04:38:19 +00:00
fix Classpath 0.98 compatibility issues
This commit is contained in:
@ -10,13 +10,20 @@
|
||||
|
||||
package java.lang;
|
||||
|
||||
import avian.Cell;
|
||||
|
||||
public class ThreadGroup implements Thread.UncaughtExceptionHandler {
|
||||
private final ThreadGroup parent;
|
||||
final ThreadGroup parent; // package private for GNU Classpath compatibility
|
||||
private final String name;
|
||||
private Cell<ThreadGroup> subgroups;
|
||||
|
||||
public ThreadGroup(ThreadGroup parent, String name) {
|
||||
this.parent = parent;
|
||||
this.name = name;
|
||||
|
||||
synchronized (parent) {
|
||||
parent.subgroups = new Cell(this, subgroups);
|
||||
}
|
||||
}
|
||||
|
||||
public ThreadGroup(String name) {
|
||||
@ -36,4 +43,75 @@ public class ThreadGroup implements Thread.UncaughtExceptionHandler {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public ThreadGroup getParent() {
|
||||
return parent;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public int activeCount() {
|
||||
int allCount = Thread.activeCount();
|
||||
Thread[] all = new Thread[allCount];
|
||||
allCount = Thread.enumerate(all);
|
||||
|
||||
int count = 0;
|
||||
for (int i = 0; i < allCount; ++i) {
|
||||
if (parentOf(all[i].getThreadGroup())) {
|
||||
++ count;
|
||||
}
|
||||
}
|
||||
|
||||
return count;
|
||||
}
|
||||
|
||||
public int enumerate(Thread[] threads) {
|
||||
return enumerate(threads, true);
|
||||
}
|
||||
|
||||
public int enumerate(Thread[] threads, boolean recurse) {
|
||||
int allCount = Thread.activeCount();
|
||||
Thread[] all = new Thread[allCount];
|
||||
allCount = Thread.enumerate(all);
|
||||
|
||||
int count = 0;
|
||||
for (int i = 0; i < allCount && count < threads.length; ++i) {
|
||||
Thread t = all[i];
|
||||
ThreadGroup g = t.getThreadGroup();
|
||||
if (g == this || (recurse && parentOf(g))) {
|
||||
threads[count++] = t;
|
||||
}
|
||||
}
|
||||
|
||||
return count;
|
||||
}
|
||||
|
||||
public boolean parentOf(ThreadGroup g) {
|
||||
for (; g != null; g = g.parent) {
|
||||
if (g == this) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public int enumerate(ThreadGroup[] groups, boolean recurse) {
|
||||
return enumerate(groups, recurse, 0);
|
||||
}
|
||||
|
||||
private int enumerate(ThreadGroup[] groups, boolean recurse, int count) {
|
||||
for (Cell<ThreadGroup> c = subgroups; c != null && count < groups.length;
|
||||
c = c.next)
|
||||
{
|
||||
ThreadGroup g = c.value;
|
||||
groups[count++] = g;
|
||||
if (recurse) {
|
||||
count = g.enumerate(groups, true, count);
|
||||
}
|
||||
}
|
||||
return count;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user