Path: csiph.com!v102.xanadu-bbs.net!xanadu-bbs.net!feeder.erje.net!eu.feeder.erje.net!newsfeed.fsmpi.rwth-aachen.de!eternal-september.org!feeder.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: Eric Sosman Newsgroups: comp.lang.java.programmer Subject: Re: thread pool Date: Tue, 22 Jul 2014 09:11:14 -0400 Organization: A noiseless patient Spider Lines: 41 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Injection-Date: Tue, 22 Jul 2014 13:11:18 +0000 (UTC) Injection-Info: mx05.eternal-september.org; posting-host="bd4e1cba8d8592bec5d5ed9e4537fbfd"; logging-data="16780"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19BlTnXf0R3CzrD4W5PjeAA" User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Thunderbird/24.6.0 In-Reply-To: Cancel-Lock: sha1:0XbO9OYeEqOvKPbERZcxpfpa/iw= Xref: csiph.com comp.lang.java.programmer:29195 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. -- esosman@comcast-dot-net.invalid