On Wed, Feb 4, 2009 at 7:41 PM, Florent Daigniere <[email protected]> wrote: > Daniel Cheng wrote: >> On Wed, Feb 4, 2009 at 12:45 AM, <[email protected]> wrote: >>> Author: nextgens >>> Date: 2009-02-03 16:45:44 +0000 (Tue, 03 Feb 2009) >>> New Revision: 25492 >>> >>> Modified: >>> trunk/freenet/src/freenet/client/async/ClientRequestScheduler.java >>> Log: >>> Use the executor and not the ticker there >>> >>> Modified: trunk/freenet/src/freenet/client/async/ClientRequestScheduler.java >>> =================================================================== >>> --- trunk/freenet/src/freenet/client/async/ClientRequestScheduler.java >>> 2009-02-03 16:24:45 UTC (rev 25491) >>> +++ trunk/freenet/src/freenet/client/async/ClientRequestScheduler.java >>> 2009-02-03 16:45:44 UTC (rev 25492) >>> @@ -662,18 +662,18 @@ >>> Runnable r = new Runnable() { >>> public void run() { >>> if(logMINOR) Logger.minor(this, "Running >>> "+gets.length+" callbacks off-thread for "+block.getKey()); >>> - for(int i=0;i<gets.length;i++) { >>> + for(SendableGet get : gets) { >>> try { >>> - if(logMINOR) >>> Logger.minor(this, "Calling callback for "+gets[i]+" for "+key); >>> - gets[i].onGotKey(key, >>> block, ClientRequestScheduler.this); >>> + if(logMINOR) >>> Logger.minor(this, "Calling callback for "+get+" for "+key); >>> + get.onGotKey(key, block, >>> ClientRequestScheduler.this); >>> } catch (Throwable t) { >>> - Logger.error(this, "Caught >>> "+t+" running callback "+gets[i]+" for "+key, t); >>> + Logger.error(this, "Caught >>> "+t+" running callback "+get+" for "+key, t); >>> } >>> } >>> if(logMINOR) Logger.minor(this, "Finished >>> running callbacks"); >>> } >>> }; >>> - node.getTicker().queueTimedJob(r, 0); // FIXME ideally >>> these would be completed on a single thread; when we have 1.5, use a >>> dedicated non-parallel Executor >>> + node.executor.execute(r, "Callbacks for "+name); >> >> The FIXME still applies: node.executor spawn a new thread for every >> request. the original comment call for a "non-parallel" executor. > > There is a patch in the pipes to make it happen; There is no reason why > not to use Executor anymore... All we need is a NativeThread factory.
I tried to do this some time before but didn't commit it. That's because the NativeThread priority must be specified on create. That means we need one java.util.concurrent.Executor for each priority. I can't find a (clean) way to keep the number of thread in thread limit. -- _______________________________________________ Devl mailing list [email protected] http://emu.freenetproject.org/cgi-bin/mailman/listinfo/devl
