Küçük bir uygulama yazıyorum ve şimdi bir sorun keşfettim. Uygulama penceresinde gecikmeden bir (daha sonra belki iki) yöntemi (bu yöntem bir şey yükler ve sonucu döndürür) çağırmam gerekir.Yeni iş parçacığı içinde kolay bir yöntem aramak için
Executor
veya Callable
gibi sınıflar buldum, ancak bunlarla nasıl çalışacağımı anlamıyorum.
Lütfen bana yardımcı olan herhangi bir çözüm gönderir misiniz?
Tüm öneriler için teşekkürler.
Düzenleme: yöntem zorunluluk sonucu döndüren. Bu sonuç parametrelere bağlıdır. Böyle şey:
public static HtmlPage getPage(String page) throws FailingHttpStatusCodeException, MalformedURLException, IOException {
return webClient.getPage(page);
}
Bu yöntem yaklaşık 8-10 saniye çalışır. Bu yöntemi uyguladıktan sonra, iş parçacığı durdurulabilir. Ama her 2 dakikada bir yöntemleri çağırmam gerek.
Düzenleme: (ı catch blok dışına return null
koymak bile) tekrar hata alıyorum bu kod ile
public static HtmlPage getPage(final String page) throws FailingHttpStatusCodeException, MalformedURLException, IOException {
Thread thread = new Thread() {
public void run() {
try {
loadedPage = webClient.getPage(page);
} catch (FailingHttpStatusCodeException | IOException e) {
e.printStackTrace();
}
}
};
thread.start();
try {
return loadedPage;
} catch (Exception e) {
return null;
}
}
: Bununla kodunu düzenledi.
[ 'Executor'] (http://docs.oracle. com/javase/7/docs/api/java/util/eşzamanlı/Executor.html) ve ['ExecutorService'] (http://docs.oracle.com/javase/7/docs/api/java/util/concurrent /ExecutorService.html) javadoc'ta örnek var. Ve [bir konu] (http://docs.oracle.com/javase/tutorial/essential/concurrency/exinter.html) resmi eğitimde * eşzamanlılık * iş parçacığı üzerinde. İşte başladığım yer burası. Bu materyallerde belirli bir şeyi anlamıyorsanız veya bu bilgileri içinde kullanmadığınız takılı kalıyorsanız yeni bir soru sormalısınız. – millimoose
Örnekleri gördüm, istediğim şeyi elde edemem. – Sk1X1
I * düşün * ne için arıyorsunuz ['ExecutorService.submit()'] (http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ExecutorService.html#submit (java.util.concurrent.Callable)) bir "Callable" ile, bu nedenle ve ilgili sınıflar/yöntemler için belgelere odaklanın. 'submit() 'sonuç geldiğinde bir şey yapmanıza izin veren bir' Gelecek 'döndürmelidir. –
millimoose