2016-04-20 2 views

ответ

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

Но лучше иметь класс реализации работоспособной, который принимает аргументы в качестве параметров конструктора, и сохранить его в качестве переменной-члена использовать в перспективе() метод. Тогда вы могли бы сделать:

new Thread(myRunnable).start(); 
+0

где он получит аргументы? – JavaHopper

+0

Поскольку Thread является анонимным и встроенным, он может видеть переменные за пределами своей области – Blitzkr1eg

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

, откуда бы он получил аргументы? – JavaHopper

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);     
     } 
    }); 
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 
} 
1

Ваш пример кода не имеет смысла:

  • Он создает Thread, который ничего не делает.
  • Он присваивает одну и ту же переменную два раза без использования значения переменной между ними.
  • Он вызывает функцию, если функция собирается возвращенияThread (и, я предполагаю, что от имени функции, что это не то, что он делает), когда вы говорите, вы хотите вызвать функцию в нить.

Другие ответы здесь показывают, что вы просили, но ИМО, вам было бы лучше узнать больше об основах Java (классы, типы, переменные, вызовы методов и т. Д.), Прежде чем пытаться научиться чему-либо о потоках.

Смежные вопросы