2010-11-23 6 views
3

Was ist der beste Weg, eine statische Methode in mehreren Threads mit einem Thread-Pool zu laufen? Auch ich versuche, ein Argument an die statische Methode zu übergeben. so etwas wierun statische Methode aus einem Thread-Pool in Java

Class A{ 
public static runTask(int i){ 
    .... 
} 

} 

und von einem Haupt:

ThreadPool pool = new ThreadPool(5, "poolname"); 

for(int i=1; i<10; i++){ 

    A.runTask(i) // but on a new thread... 

} 

Dank!

+0

Ich hoffe, dass Sie beabsichtigen, nicht veränderbare statische Felder zu verwenden. –

Antwort

1

Werfen Sie einen Blick in die Dokumentation für java.util.concurrent.Executors. Es sollte Ihre Bedürfnisse erfüllen. Hier ist ein einfaches Beispiel der Verwendung es:

public class ExecutorServiceTest { 
    static ExecutorService threadPool = Executors.newCachedThreadPool(); 

    public static void main(String[] args) throws Exception { 
     // Queue 10 executions of someTask into the threadPool 
     for(int i = 0; i < 10; i++) { 
      runSomeTaskInThreadPool(); 
     } 
     // the shutdown method causes the executor to: 
     // 1. stop accepting new tasks, and 
     // 2. allow previously queued jobs to complete, and 
     // 3. shut down all pooled threads once all jobs are complete 
     threadPool.shutdown(); 
     // block until the threadPool has finished shutting down, 
     // which indicates that all tasks have finished executing 
     threadPool.awaitTermination(Long.MAX_VALUE, TimeUnit.MILLISECONDS); 
    } 

    private static void runSomeTaskInThreadPool() { 
     Future future = threadPool.submit(new Runnable() { 
      public void run() { 
       someTask(); 
      } 
     }); 
     // TODO: Maybe keep track of futures to monitor success/failure of task 
    } 

    static AtomicInteger counter = new AtomicInteger(); 
    public static void someTask() { 
     System.out.println("someTask: " + counter.incrementAndGet() 
       + " on thread: " + Thread.currentThread()); 
    } 
} 
+0

Können Sie genauer sein? Welcher der Executoren und wie genau sollte es verwendet werden? – yken