Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #29206

Re: thread pool

From Philipp Kraus <philipp.kraus@flashpixx.de>
Newsgroups comp.lang.java.programmer
Subject Re: thread pool
Date 2014-07-22 21:38 +0200
Organization 1&1 Internet AG
Message-ID <lqmekf$mh1$1@online.de> (permalink)
References <lqlna0$23fm$1@ariadne.rz.tu-clausthal.de> <lqlntl$gcc$1@dont-email.me>

Show all headers | View raw


On 2014-07-22 13:11:14 +0000, Eric Sosman said:

> On 7/22/2014 9:00 AM, Philipp Kraus wrote:
>> Hello,
>> 
>> I would like to create a thread pool with threads, which are should
>> stopped by the user.
>> So I create my pool with
>> 
>> m_pool = Executors.newCachedThreadPool();
>> for (int i = 0; i < m_barrier.getParties(); i++)
>> m_pool.submit(new Worker(m_barrier));
>> 
>> my Worker implements Runnable with the run-method
>> 
>> while (!Thread.currentThread().isInterrupted()) {
>> // do something
>> }
>> 
>> Within the while-loop I run my barrier and I catch the InterruptedException
>> 
>> I would like to create a thread pool with a number of threads, which
>> runs until the user
>> sends a stop signal. At the moment I run m_pool.shutdown() and/or
>> shutdownNow(), but
>> which way is the correct Java structure. My target is, that a method
>> creates all threads
>> of the pool, each thread runs unlimited time until the user sends a stop
>> signal.
> 
>      If "each thread runs unlimited time," why use a thread pool?  The
> purpose of this kind of pool is to run many short-lived (usually) tasks
> on a set of threads, with each thread handling many tasks in succession.
> You don't need that (it seems), so wouldn't it be simpler to launch
> as many threads as you want and just let them run?  When it's time to
> stop you can interrupt them all (telling them to quit) and join them
> all (so you'll know when all the quitting's finished).
> 
>      If that doesn't seem to meet your need, please describe what you're
> trying to do in more detail.

This works very fast :-) but I have got a problem with the thread interrupt.
I create a thread pool with:

 m_threadcounter = new CountDownLatch(m_barrier.getParties());
for (int i = 0; i < m_barrier.getParties(); i++)
	new CWorker(m_runners, m_threadcounter, m_barrier, i == 0, m_world, 
m_currentstep).start();

and stop the pool with:

        try {

            m_runners.interrupt();
            m_threadcounter.await();

        } catch (InterruptedException l_exception) {
            m_Logger.error(l_exception.getMessage());
        }

m_runners is a ThreadGroup;

The thread run shows:

 while (!Thread.currentThread().isInterrupted()) {

           // do something

            try {
                
Thread.sleep(CConfiguration.getInstance().get().ThreadSleepTime);
            } catch (InterruptedException l_exception) {
                Thread.currentThread().interrupt();
            }

        }

        m_counter.countDown();

This works fine on the first run. After I run the stop part once and 
run the creation part again
all new threads a stopped, because the interrupt flag is set, so my new 
thread dows not run the while
loop within the run.

So I would like to create a a thread group, run it, stop it and create 
a group again. I cannot set the thread to
sleep, because the data which is used by the threads must be 
reinitialize if the group is created

Thanks a lot

Phil

Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

thread pool Philipp Kraus <philipp.kraus@flashpixx.de> - 2014-07-22 15:00 +0200
  Re: thread pool Eric Sosman <esosman@comcast-dot-net.invalid> - 2014-07-22 09:11 -0400
    Re: thread pool Philipp Kraus <philipp.kraus@flashpixx.de> - 2014-07-22 16:32 +0200
    Re: thread pool Philipp Kraus <philipp.kraus@flashpixx.de> - 2014-07-22 21:38 +0200
      Re: thread pool Eric Sosman <esosman@comcast-dot-net.invalid> - 2014-07-22 16:29 -0400
        Re: thread pool Philipp Kraus <philipp.kraus@flashpixx.de> - 2014-07-22 23:01 +0200
          Re: thread pool Eric Sosman <esosman@comcast-dot-net.invalid> - 2014-07-22 17:14 -0400
            Re: thread pool Philipp Kraus <philipp.kraus@flashpixx.de> - 2014-07-23 08:11 +0200
              Re: thread pool Eric Sosman <esosman@comcast-dot-net.invalid> - 2014-07-23 07:24 -0400
                Re: thread pool Philipp Kraus <philipp.kraus@flashpixx.de> - 2014-07-23 15:57 +0200
                Re: thread pool Eric Sosman <esosman@comcast-dot-net.invalid> - 2014-07-23 11:41 -0400
                Re: thread pool Philipp Kraus <philipp.kraus@flashpixx.de> - 2014-07-24 09:55 +0200
                Re: thread pool Eric Sosman <esosman@comcast-dot-net.invalid> - 2014-07-24 08:39 -0400
  Re: thread pool Kevin McMurtrie <mcmurtrie@pixelmemory.us> - 2014-07-24 20:50 -0700

csiph-web