그런 다음 프로세스를 중단 일정 시간을, 그리고 만약 당신이 대답 할 수있는 흥미로운 질문이 있습니다
- 당신이 질문에 대답하기에 충분한 데이터를 수집 했는가를?
나는 그 질문에 대해 깊이 생각하게 할 것이지만, 여전히 계산 응답을 방해 할 수있는 방법을 제안합니다.
먼저 답이 맞는지 "알기"위해 제곱근의 처음 50 자리를 미리 알아야합니다. 정확성은 소요 시간과는 무관해야하므로 계산을 한 번 확인한 다음 정답을 하드 코드해야합니다.
두 번째로, 제곱근 계산 알고리즘을 실행할 수있는 패키지로 패키징해야합니다. 나는 서명
public void run() {
// your code goes here
}
과 방법을 강제로 자바 인터페이스 Runnable
는, 그럼 당신은 자바 Thread
과 잘 조화 무언가있을 것이라는 점을 건의 할 것입니다 그리고 당신은 자바 스레드를 중단 할 수 있습니다. 스레드의 결과가 중단되면 정상적인 상황에서 스레드 내에서 계산을 신뢰 할 수 없습니다.
간단한 수단 (그리고 프로젝트가 있지만, 안티 가설을 반증하는 시도에 대한 최신 자바 기술을 활용에 대한 아니기 때문에) 나중에 당신이 뭔가를 찾을 수 복용하면
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;
}
}
위의 예 정말 자바 코드의 품질을 향상 할 기능의 톤이있다; 그러나 코드의 품질은 당신의 요점을 증명하는 것과는 독립적이라는 것을 명심하십시오. 코드를 멋지게 연마하여 실제로 문제를 해결하는 것을 잊어 버리는 것이 가능합니다.
은 위의 코드는,이 기술은 당신의 (다음 루프 반복 전에) 알려진 상태에서 실행 가능한, 그래서 아마 그런 다음 기술 일부 중간 데이터를 캡처 할 수 종료
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
(Sideways thought) 루트를 한 번 계산 한 다음 해당 숫자를 1000 번 확인하십시오. 그 시간을 1,000으로 나누면 검사 비용이 얼마인지 알 수 있습니다. (about- ish. 캐싱 문제에주의하십시오. * 둘 중 하나의 실행을 서로 비교하고 싶지는 않습니다.) – usr2564301