【问题标题】:create thread , do something, kill thread - all inside loop [JAVA]创建线程,做某事,杀死线程 - 全部在循环内 [JAVA]
【发布时间】:2014-04-23 19:12:32
【问题描述】:

我对线程很陌生。我需要实现这样的方法,它将创建 2 个线程,做一些事情然后杀死它们 - for 循环中的所有内容。

主要目的:我需要确保线程将使用来自 for 循环的相同“i”值并行工作。这就是为什么我不在每个线程中声明 for 循环的原因。 (哪个先完成我不在乎)

我的愿景

          public void threadsJob() throws Exception{
          for(int i = 1; i<1000 ; i++) {
          **final** int j = i;
          Thread t1= new Thread(new Runnable() {
           public void run() {
                     foo(j);
                }     
           }
      );

          Thread t2= new Thread(new Runnable() {
           public void run() {
                     bar(j);
                }     
           }
      );

      t1.start();
      t2.start();

      t1.join();
      t2.join();
}}

我的问题:那段代码有多可怕?应该改变什么?此外,我更喜欢保持代码非常简单。但是,我不确定上面的代码是否是合适的例子:)

【问题讨论】:

  • 根据 foo 和 bar 实际执行的操作,创建新线程的时间很可能比仅连续执行工作所需的时间长。使用线程池。

标签: java multithreading loops coding-style


【解决方案1】:

使用 Executors.newFixedThreadPool(2)

http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/Executors.html

执行两个执行你的工作的 Runnable。

http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ExecutorService.html

然后关闭并在 ExecutorService 上等待终止。

【讨论】:

    猜你喜欢
    • 2013-08-04
    • 1970-01-01
    • 2016-02-29
    • 2013-09-26
    • 1970-01-01
    • 1970-01-01
    • 2018-04-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多