【问题标题】:Pass parameter to Call method in Java.util.Concurrent将参数传递给 Java.util.Concurrent 中的 Call 方法
【发布时间】:2012-07-21 16:42:39
【问题描述】:

我是高级 Java.util.Concurrent 包的新手,我想做的是使用线程池同时读取多个文本文件。我需要一种方法将文件名作为参数传递给调用方法的实现。

类似这样的:

public String call (String param)

如果有其他方法可以实现这一点,我将感谢您的帮助。

【问题讨论】:

  • 旁注:您所做的是 I/O 绑定而不是 CPU 绑定,并且使用多个线程不太可能提高性能。这实际上可能是有害的。
  • 每个线程将比读取文件承担更多的 CPU 处理
  • 你想要的基本上是一个函数。 Java 不能轻易地将函数建模为一等公民,至少在语法上是这样。对函数式编程有更好支持的语言可能会受到关注。

标签: java multithreading concurrency java.util.concurrent


【解决方案1】:

在实现Runnable 接口时,将您的参数添加为类的成员。并在构造函数中添加这个成员的初始化。比从 run 方法使用它。

例如:

class ConcurrentFileReader implements Runnable{
   String fileName;

   public ConcurrentFileReader(String fileName){ 
       this.fileName = fileName; 
   }

   public void run(){
       File f = new File(fileName);
      // whatever
   }
}

这种模式被称为“方法对象”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-21
    • 1970-01-01
    • 2011-07-23
    • 2017-01-05
    • 2013-10-04
    • 2013-05-19
    • 2013-02-08
    • 2021-07-19
    相关资源
    最近更新 更多