[SNMP4J] Snmp Async Thread Pool

Smith, Ryan rsmith at shsolutions.com
Mon Jul 16 21:15:59 CEST 2007


I figured it out.....
You call snmp.close(); 

DOH! 

Thanks for the help Sean, and thanks for listening everyone else :)

Snmp.java does make a threadPool of size 10 by the way:
// Timer for retrying pending requests
    private ScheduledThreadPoolExecutor executor = new
ScheduledThreadPoolExecutor(10);


-Ryan
 

-----Original Message-----
From: snmp4j-bounces at agentpp.org [mailto:snmp4j-bounces at agentpp.org] On
Behalf Of Smith, Ryan
Sent: Monday, July 16, 2007 3:05 PM
To: Gibbons, Sean
Cc: snmp4j at agentpp.org
Subject: RE: [SNMP4J] Snmp Async Thread Pool

I found it, SNMP4J isn't making the threaded pool directly, but it is
calling Java API code that makes the threadedpool,  So it seems that
design-wise, snmp4j *should* include a method to control this ThreadPool
functionality.

Here's what I have so far:
I get to line 803 in Snmp.java:
executor.schedule(request, delay, TimeUnit.MILLISECONDS); 

If you step into this method, it calls ScheduledThreadPoolExecutor's:
    public ScheduledFuture<?> schedule(Runnable command, long delay,
TimeUnit unit)

And this method calls:
    private void delayedExecute(Runnable command)

This is the method that creates the ThreadPool from the initial example.

It is a java method in package java.util.concurrent;

    /**
     * Specialized variant of ThreadPoolExecutor.execute for delayed
tasks.
     */
    private void delayedExecute(Runnable command) {
        if (isShutdown()) {
            reject(command);
            return;
        }
        // Prestart a thread if necessary. We cannot prestart it
        // running the task because the task (probably) shouldn't be
        // run yet, so thread will just idle until delay elapses.
        if (getPoolSize() < getCorePoolSize())
            prestartCoreThread();
            
        super.getQueue().add(command);
    }


Now, before I get all into this, any one got any ideas how to gracefully
shutdown this thread pool?
Thanks for the help so far.
-Ryan


-----Original Message-----
From: Gibbons, Sean [mailto:Sean.Gibbons at trueposition.com]
Sent: Monday, July 16, 2007 2:51 PM
To: Smith, Ryan
Cc: snmp4j at agentpp.org
Subject: RE: [SNMP4J] Snmp Async Thread Pool

Just to append to what I said earlier, since I noticed something.  If
you are using a multi threaded dispatcher, you have to pass the thread
pool as part of the constructor.  So I guess you are responsible for
cancelling it. 

I know you're not using the multi threaded dispatcher.  But my previous
statement was sorta wrong.  I still don't see where that thread pool is
coming from.  According to eclipse, a threadpool object is created in
the SNMP4j api only in the listen() method of the SnmpRequest class.  

If you are using eclipse or something, I'd run a query to see where the
threadpool object is being created in your code.  And make sure that
pool gets closed on exit.

-----Original Message-----
From: Smith, Ryan [mailto:rsmith at shsolutions.com]
Sent: Monday, July 16, 2007 2:39 PM
To: Gibbons, Sean
Cc: snmp4j at agentpp.org
Subject: RE: [SNMP4J] Snmp Async Thread Pool

Sean,
Thanks for the heads up, that's good to know.  As far as I know though,
I'm not using MultiThreadedMessageDispatcher.  I just sent out my
example on the mailing list taken straight from the SNMP.html javadoc
example: http://www.snmp4j.org/doc/org/snmp4j/Snmp.html
With some slight modifications to get it to run.

Ill keep digging around, I wish this example was using the threadPool,
so I could call .shutdown() on it.

Thanks,
-Ryan

Confidentiality Notice
This e-mail (including any attachments) is intended only for the
recipients named above. It may contain confidential or privileged
information and should not be read, copied or otherwise used by any
other person. If you are not a named recipient, please notify the sender
of that fact and delete the e-mail from your system.


_______________________________________________
SNMP4J mailing list
SNMP4J at agentpp.org
http://lists.agentpp.org/mailman/listinfo/snmp4j



More information about the SNMP4J mailing list