java - 如何在java中并行执行具有不同输入的方法的多个实例?

标签 java multithreading parallel-processing

我有一个方法,它接受一个列表并对其进行一些处理,然后更新另一个全局列表。我需要使用并行输入的不同列表运行此方法的多个实例。 多线程支持吗?如果是,我该如何使用它,即:我应该在线程中放入什么?高度赞赏示例。


我正在考虑在线程类中有一个静态列表,它在运行时由线程的不同实例更新(该列表包含字符串和计数器,因此更新是添加新字符串或增加现有字符串的计数器) ..我需要每10秒读取一次添加到这个全局列表中的任何内容并打印出来..正在使用适合这个的静态列表,我怎样才能让它线程安全?

最佳答案

是的,这是多线程编程的一种非常常见的用法。

class ListProcessor implements Runnable {
    /* field/s representing param/s */
    public ListProcessor(/* param/s */) {
        /* ... */
    }

    @Override
    public void run() {
        /* process list */
    }
}

然后,当你想实际处理一些列表时。

class SomeClass {
    ExecutorService listProcessor;
    public SomeClass(/* ... */) {
        listProcessor = ExecutorService.newFixedThreadPool(numThreads);
        /* for each thread, however you want to do it */
        listProcessor.execute(new ListProcessor(/* param/s */));
        /* when finished adding threads */
        listProcessor.shutdown();
        /* note that the above two lines of code (execute/shutdown) can be
         * placed anywhere in the code. I just put them in the constructor to
         * facilitate this example.
         */
    }
}

关于java - 如何在java中并行执行具有不同输入的方法的多个实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11127792/

相关文章:

java - 如何在 Spring 的每次测试之前重新创建数据库?

java - 是否可以在运行时添加新的 ActivityAliases?

java - Hadoop:在映射器的输出中使用自定义对象

c++ - Thread Local Storage 可以伪造/破解吗?

c# - 事件发生时唤醒一个线程

android - glsl编程架构哪一部分是 "really"并行执行?

java - 如何使用上下文路径访问Tomcat中的应用程序

Ruby 的线程速度

c++ - 并行构建 OpenGL 模型?

java - 从字符串创建对象并在同步块(synchronized block)中用作监视器