我正在開發一個項目,並且在停止該程序時遇到了一些困難。我使用的是線程而不是定時器,因爲我覺得這很容易處理。基本上,我現在面臨的問題是從主功能到靜態功能的時間。任何幫助,將不勝感激。如果我的問題不明確,我會在代碼的重要部分添加註釋。 TIA如何使用靜態類中的線程實現停止條件
import java.util.Random;
import java.util.Scanner;
import javax.swing.JOptionPane;
public class InLineCustomers {
@SuppressWarnings("static-access")
public static void main (String args[]){
try{
final long NANOSEC_PER_SEC = 1000l*1000*1000;
long startTime = System.nanoTime();
long time = (System.nanoTime()-startTime);
final long genTime=3*60*NANOSEC_PER_SEC;
while (time<genTime){ //Program runs for 3 minutes
customerGenerator();
Random r = new Random();
int timeValue=r.nextInt(10);
Thread.currentThread().sleep(timeValue * 1000);
}
}
catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void customerGenerator(){
...code here
if(selection.equalsIgnoreCase("C")){
/**This doesn't working because the customerGenerator is in it's own static class
* Would the program be more difficult to read if I had everything in the main method?
* That's what I'm trying to avoid
*
* time=genTime;
JOptionPane.showMessageDialog(null,"The restaurant is no longer accepting any customers.");
*/
stop(); //This isn't working because it created a different timer
}
}
public static void stop(){
final long NANOSEC_PER_SEC = 1000l*1000*1000;
long startTime = System.nanoTime();
long time = (System.nanoTime()-startTime);
final long genTime=3*60*NANOSEC_PER_SEC;
time=genTime;
JOptionPane.showMessageDialog(null,"The restaurant is no longer accepting any customers.");
}
}
您並未在任何地方創建線程,而只是使用主線程。這裏沒有「主類」或「靜態類」,只是一個靜態主函數和一個靜態customerGenerator函數,它們都屬於同一個類。似乎你錯過了幾個基本的線程概念。 – Tibrogargan
謝謝,但沒有回答我的問題。不過,我會編輯這個問題。 – DontPrayForMe