是否可以选择在main方法中运行哪个线程?例如:
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
System.out.print("How many entries do you want to make? ");
entries = input.nextInt();
System.out.print("\nPlease enter your choice:\n ");
System.out.print("\n1. Specific file");
System.out.println("\n2. All files\n");
userChoice = choiceScanner.nextInt();
if (userChoice == 1)
new Thread(new GUIGenerator(entries)).start();
if (userChoice == 2)
new Thread(new GUIGenerator2(entries)).start();
}
});
}
在这里,我想要做的是让程序运行第一个或第二个线程,具体取决于用户输入的内容。这是可能的,还是主要只需要一个线程?
答案 0 :(得分:1)
多线程背后的整个想法是它允许你的代码并行执行指令(也就是同时执行。)因此,如果你从main开始一个新的Thread
,你的新{{1} }}将开始执行,Thread
将继续执行下一条指令,就像Main
从未发生过一样。所以是的,很有可能同时执行新的Thread
和初始程序流。
答案 1 :(得分:1)
SwingUtilities.invokeLater
的全部意义在于你传递了一个runnable,Swing会在你可以的时候为你运行它。如果它与UI进行交互,你不应该自己运行东西,因为只有一个应用程序线程呈现图形组件。只是从它的外观来看,这个片段似乎不正确。
我不明白为什么你需要创建一个新线程,你只需要调用GUIGenerator.run
和GUIGenerator2.run
中包含的任何代码。
答案 2 :(得分:0)
"是否可以选择在main方法中运行哪个线程?"
是强>
理性是你已经在你的例子中做过了。没有什么可以阻止你编写逻辑(例如你提供的if-else条件)来激活你的线程的一个实现与另一个实现。