如果你設定的時間量,然後中斷的過程中,你有一個有趣的問題來回答:
我會讓你思考這個問題,而我建議你如何打斷一個仍在計算的答案。
首先,您應該提前知道平方根的前五十位數字,因爲您需要知道答案是否正確。正確性應獨立於需要多長時間,因此也許您只需驗證一次計算,然後硬編碼正確的答案。
其次,你需要將你的平方根計算算法包裝在可以運行的東西中。我建議Java接口Runnable
,強制的方法與簽名
public void run() {
// your code goes here
}
然後,你將有一些能夠與Java Thread
很好融合,你可以中斷Java線程。一旦中斷了線程的結果,就不能相信線程內的任何計算(在正常情況下)。
最簡單的方法(和因爲你的項目是不是利用最新的Java技術,而是試圖反駁你的反假說)是,如果你發現了一些正在做以後類似
Thread solution1 = new Thread(new Runnable1());
solution1.start();
時間太長
Thread.sleep(10000); // sleeps the current thread 10 seconds
solution1.interrupt();
請注意,這是一個非常不雅的方式來停止一個線程,你不能相信任何的Runnable1
正在研究之後。
其他更復雜的技術是可用的,如:
public class Runnable1 implements Runnable {
private boolean running;
public Runnable1() {
running = false;
}
public void run() {
running = true;
while (running) {
// do one step of your computation
}
}
public void shutdown() {
running = false;
}
}
上面的例子有大量的特性它確實提高了Java代碼的質量;但是,請注意,代碼質量獨立於證明您的觀點。擦亮代碼是非常好的,忘記實際解決問題是可能的。
上面的代碼將被稱爲
Runnable1 runnable1 = new Runnable1();
Thread thread1 = new Thread(runnable1);
thread1.start
// some means of waiting
Thread.sleep(10000); // sleeps 10 seconds
runnable1.shutdown();
這種技術會關閉你的已知狀態(下一個循環迭代之前)可運行的,所以也許你可以再從技術捕獲一些中間數據,只要Runnable
的其餘部分有辦法報告中間解決方案。
請告訴我們你的努力,直到現在 - 你試圖解決這個問題。 – Lion
(側身思考)計算你的根一次,然後檢查其數字一千次。把那個時間除以1,000,你知道檢查費用多少。 (關於-h,小心緩存問題 - 你不*想要比較一個單獨運行與eachother。) – usr2564301