Author: nextgens
Date: 2008-02-16 02:11:34 +0000 (Sat, 16 Feb 2008)
New Revision: 17972
Modified:
trunk/freenet/src/freenet/support/PooledExecutor.java
Log:
revert r17970 which was silly
Modified: trunk/freenet/src/freenet/support/PooledExecutor.java
===================================================================
--- trunk/freenet/src/freenet/support/PooledExecutor.java 2008-02-16
02:06:52 UTC (rev 17971)
+++ trunk/freenet/src/freenet/support/PooledExecutor.java 2008-02-16
02:11:34 UTC (rev 17972)
@@ -60,23 +60,21 @@
boolean miss = false;
synchronized(this) {
jobCount++;
- synchronized(waitingThreads) {
- if(!waitingThreads[prio].isEmpty())
- t = (MyThread)
waitingThreads[prio].remove(waitingThreads[prio].size() - 1);
- else {
- // Must create new thread
- if((!fromTicker) &&
NativeThread.usingNativeCode() && prio < Thread.currentThread().getPriority()) {
- // Run on ticker
-
ticker.queueTimedJob(job, 0, true);
- return;
- }
- // Will be coalesced by thread
count listings if we use "@" or "for"
- t = new MyThread("Pooled thread
awaiting work @" + (threadCounter[prio]), threadCounter[prio], prio,
!fromTicker);
- threadCounter[prio]++;
- t.setDaemon(true);
- mustStart = true;
- miss = true;
+ if(!waitingThreads[prio].isEmpty()) {
+ t = (MyThread)
waitingThreads[prio].remove(waitingThreads[prio].size()-1);
+ } else {
+ // Must create new thread
+ if((!fromTicker) &&
NativeThread.usingNativeCode() && prio < Thread.currentThread().getPriority()) {
+ // Run on ticker
+ ticker.queueTimedJob(job, 0,
true);
+ return;
}
+ // Will be coalesced by thread count
listings if we use "@" or "for"
+ t = new MyThread("Pooled thread
awaiting work @"+(threadCounter[prio]), threadCounter[prio], prio, !fromTicker);
+ threadCounter[prio]++;
+ t.setDaemon(true);
+ mustStart = true;
+ miss = true;
}
}
synchronized(t) {
@@ -104,13 +102,11 @@
}
}
- public int[] waitingThreads() {
- synchronized(waitingThreads) {
- int[] result = new int[waitingThreads.length];
- for(int i = 0; i < result.length; i++)
- result[i] = waitingThreads[i].size();
- return result;
- }
+ public synchronized int[] waitingThreads() {
+ int[] result = new int[waitingThreads.length];
+ for(int i=0; i<result.length; i++)
+ result[i] = waitingThreads[i].size();
+ return result;
}
class MyThread extends NativeThread {
@@ -138,7 +134,7 @@
}
if(job == null) {
- synchronized(waitingThreads) {
+ synchronized(PooledExecutor.this) {
waitingThreads[nativePriority].add(this);
}
synchronized(this) {
@@ -157,7 +153,7 @@
// execute() won't give
us another job if alive = false
}
}
- synchronized(waitingThreads) {
+ synchronized(PooledExecutor.this) {
waitingThreads[nativePriority].remove(this);
if(!alive) {
runningThreads[nativePriority].remove(this);