如何从后台线程调用Java类

时间:2016-04-20 13:42:18

标签: java multithreading

我需要从后台线程调用此类。

ChartPenData.main(arguments);

我该怎么做?

Thread thread = new Thread();
thread = ChartPenData.main(arguments);
thread.run();

5 个答案:

答案 0 :(得分:2)

new Thread() {
  public void run() {ChartPenData.main(arguments);}
}.start();

但最好有一个类实现runnable,它将参数作为构造函数参数,并将其存储为成员变量以在run()方法中使用。 然后你会这样做:

new Thread(myRunnable).start();

答案 1 :(得分:1)

Thread t = new Thread() {
    public void run() {
        ChartPenData.main(arguments);
    }
};
t.start();

答案 2 :(得分:1)

最简单的安全方法是使用java.util.concurrent.ExecutorService。

您可以使用java.util.concurrent.Executors实用程序方法来创建ExecutorService

示例:

 private final ExecutorService executorService = Executors.newSingleThreadExecutor();
 executorService.submit( new Runnable() {

        @Override
        public void run()
        {
            ChartPenData.main(arguments);                
        }
    } );

答案 3 :(得分:1)

这应该让你对你想要实现的目标有一个公平的了解

    public class Tester {
       public static void main(String args[]) {
          String[] arguments = {"param1", "param2"};
          Thread t = new Thread(new ClassCaller(arguments));
          t.start();
       }
    }

    class ClassCaller implements Runnable {
       private String[] arguments;
       public ClassCaller(String[] args) {
          arguments = args;
       }
       public void run() {
         ChartPenData.main(arguments);
       }
    }

class ChartPenData {
//your class code goes here
}

答案 4 :(得分:1)

您的示例代码没有多大意义:

  • 它会创建一个无法执行任何操作的Thread
  • 它分配同一个变量两次,而不使用其间的变量值。
  • 它调用一个函数,就好像该函数将返回一个Thread一样(并且,我从函数的名称猜测那个&#39}不是当你说要在线程中调用函数时,它会做什么。

这里的其他答案向您展示了您的要求,但IMO,在您尝试学习任何有关线程的知识之前,最好还是学习更多Java基础知识(类,类型,变量,方法调用等)。