Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何对同一类中的多个方法使用Java多线程?_Java_Multithreading - Fatal编程技术网

如何对同一类中的多个方法使用Java多线程?

如何对同一类中的多个方法使用Java多线程?,java,multithreading,Java,Multithreading,我是Java新手。我有一个方法functionX(List),它在functionY中被多次调用 class A { void functionX(List<Object>){ ... } Void functionY { while(condition) { functionX(); } } } 现在我想使用多线程为列表中的每个元素执行functionX方法。我不知道怎么做。感谢您的

我是Java新手。我有一个方法
functionX(List)
,它在
functionY
中被多次调用

class A {
    void functionX(List<Object>){
    ...
    }
    Void functionY {
        while(condition) {
             functionX();
        }
    }
}

现在我想使用多线程为
列表中的每个元素执行
functionX
方法。我不知道怎么做。感谢您的帮助。

@mohan.t,在您的问题中。您已经询问您想要列表元素的并行处理

在您的问题描述中,您没有提到它的作用——因此我将使它成为通用的

class A {
    void functionX(List<YourClass> myList){
       ExecutorService exs = Executors.newFixedThreadPool("expected size of list");
        for( Runnable r : myList){
           exs. submit(r);
        }
    exs.shutdown();

    }
    Void functionY {
        while(condition) {
             functionX();
        }
    }
}
检查如何在java中创建和运行线程,并查看Executor框架


如果这些对象是不可修改的,也就是说,如果您无法将其更改为实现runnable--回发--我们可以查看更复杂的选项。

我建议从官方开始。您需要理解这些概念,因为它们不是那么简单。您的类A必须实现可运行接口。请参阅:然后选中:“…使用多线程执行方法…”不清楚您的要求。我赞同海因·布劳德的话:是时候读一些教程了。
class A {
    void functionX(List<YourClass> myList){
       ExecutorService exs = Executors.newFixedThreadPool("expected size of list");
        for( Runnable r : myList){
           exs. submit(r);
        }
    exs.shutdown();

    }
    Void functionY {
        while(condition) {
             functionX();
        }
    }
}
Class YourClass implements Runnable{

   @override
      public void run(){
          ...
          // your logic goes here 
       }
}