{"id":290,"date":"2010-11-18T18:23:59","date_gmt":"2010-11-18T16:23:59","guid":{"rendered":"http:\/\/wenzlaff.de\/cgi-bin\/weblog_basic\/index.php?p=290"},"modified":"2021-11-22T17:16:44","modified_gmt":"2021-11-22T16:16:44","slug":"threads-mit-asynchron-ruckgabe-uber-callable","status":"publish","type":"post","link":"http:\/\/blog.wenzlaff.de\/?p=290","title":{"rendered":"Threads mit asynchron R\u00fcckgabe \u00fcber Callable"},"content":{"rendered":"<p>Um einen neuen Thread zu starten der ein Ergebniss asynchron liefert, gibt es seit Java 1.5 die Schnittstelle <code>Callable<V><\/code>.<\/p>\n<p>Was muss getan werden?<\/p>\n<p>-Die Klasse mit dem Ergebniss muss <code>Callable<V><\/code>implementieren und <code>V call() throws Exception<\/code> \u00fcberschreiben.<\/p>\n<p>-Evl. im Konstruktor der Ergebniss Klasse Parameter mitgeben.<\/p>\n<p>-Dann den Excecutor anlegen<code> ExecutorService executor = Executors.newCachedThreadPool();<\/code><\/p>\n<p>-Einen neuen \u00dcberwachungs Thread starten mit <code>Future<?> erg = executor.submit(ergebnisKlasse)<\/code>.<br \/>\n W\u00fcrde man <code>Future<?> erg = executor.submit(u).<strong>get() <\/strong><\/code> verwenden w\u00fcrde eine synchrone abarbeitung des Threads erfolgen. Das hei\u00dft es w\u00fcrde die weitere Bearbeitung solange geblockt, bis der Thread fertig ist.<\/p>\n<p>-Mit <code>erg.get(1, TimeUnit.SECONDS)<\/code> wird das Ergebnis des Threads geliefert oder aber wenn die angegebenen Zeit abgelaufen ist wird<br \/>\neine <code>TimeoutException<\/code> geworfen.<\/p>\n<p>-Mit <code>erg.isDone()<\/code> kann abgefragt werden ob der Thread fertig ist oder nicht<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Um einen neuen Thread zu starten der ein Ergebniss asynchron liefert, gibt es seit Java 1.5 die Schnittstelle Callable. Was muss getan werden? -Die Klasse mit dem Ergebniss muss Callableimplementieren und V call() throws Exception \u00fcberschreiben. -Evl. im Konstruktor der Ergebniss Klasse Parameter mitgeben. -Dann den Excecutor anlegen ExecutorService executor = Executors.newCachedThreadPool(); -Einen neuen \u00dcberwachungs &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/blog.wenzlaff.de\/?p=290\" class=\"more-link\"><span class=\"screen-reader-text\">\u201eThreads mit asynchron R\u00fcckgabe \u00fcber Callable\u201c <\/span>weiterlesen<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[9,112,2178,186,187],"class_list":["post-290","post","type-post","status-publish","format-standard","hentry","category-java","tag-9","tag-beispiel","tag-java","tag-thread","tag-timer"],"_links":{"self":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/290","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=290"}],"version-history":[{"count":0,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/290\/revisions"}],"wp:attachment":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=290"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=290"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=290"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}