{"id":1996,"date":"2013-08-04T23:05:01","date_gmt":"2013-08-04T21:05:01","guid":{"rendered":"http:\/\/www.tutego.de\/blog\/javainsel\/?p=1996"},"modified":"2013-08-04T23:05:01","modified_gmt":"2013-08-04T21:05:01","slug":"qa-wie-kann-man-einem-thread-eine-bestimmte-zeit-zur-ausfhrung-geben","status":"publish","type":"post","link":"https:\/\/www.tutego.de\/blog\/javainsel\/2013\/08\/qa-wie-kann-man-einem-thread-eine-bestimmte-zeit-zur-ausfhrung-geben\/","title":{"rendered":"Q&amp;A: Wie kann man einem Thread eine bestimmte Zeit zur Ausf&uuml;hrung geben?"},"content":{"rendered":"<p>Eine Idee ist, nicht einen eigenen Thread selbst zu starten &#8212; was man sowieso nicht so oft macht &#8212; sondern einen ThreadPool aus Java 5 mit einzusetzen (Executors#newCachedThreadPool() ), der einen Executer (ExecutorService) implementiert. Der ExecutorService hat eine Funktion submit(Runnable task), die ein Future liefert. Mit diesem Future arbeitest du dann mit get(long timeout, TimeUnit unit).<\/p>\n<p>Code:<\/p>\n<pre>package com.tutego;\n\nimport java.util.concurrent.ExecutionException;\nimport java.util.concurrent.ExecutorService;\nimport java.util.concurrent.Executors;\nimport java.util.concurrent.Future;\nimport java.util.concurrent.TimeUnit;\nimport java.util.concurrent.TimeoutException;\n\npublic class ExitAfterATime\n{\n  public static void main( String[] args )\n  {\n      ExecutorService es = Executors.newCachedThreadPool();\n      Future&lt;?&gt; submit = es.submit( new Runnable() {\n        @Override public void run()\n        {\n          try { Thread.sleep( 2000 ); } catch ( InterruptedException e ) { System.out.println(&quot;InterruptedException&quot;); }\n        } } );\n\n      try\n      {\n        submit.get( 500, TimeUnit.MILLISECONDS );\n      }\n      catch ( InterruptedException e )\n      {\n      }\n      catch ( ExecutionException e )\n      {\n      }\n      catch ( TimeoutException e )\n      {\n        System.out.println( &quot;Canceling&quot; );\n        submit.cancel( true );\n        System.out.println( &quot;Canceling Done&quot; );\n      }\n\n      es.shutdownNow();\n  }\n}<\/pre>\n<p>Es gibt noch andere L\u00f6sungen und das concurrent Paket bietet viele M\u00f6glichkeiten. Der Programmcode muss aber mitspielen und auch beendet werden k\u00f6nnen, also cancel(\u2026) unterst\u00fctzen.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Eine Idee ist, nicht einen eigenen Thread selbst zu starten &#8212; was man sowieso nicht so oft macht &#8212; sondern einen ThreadPool aus Java 5 mit einzusetzen (Executors#newCachedThreadPool() ), der einen Executer (ExecutorService) implementiert. Der ExecutorService hat eine Funktion submit(Runnable task), die ein Future liefert. Mit diesem Future arbeitest du dann mit get(long timeout, TimeUnit [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":"","_links_to":"","_links_to_target":""},"categories":[1],"tags":[],"class_list":["post-1996","post","type-post","status-publish","format-standard","hentry","category-allgemein"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/1996","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/comments?post=1996"}],"version-history":[{"count":1,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/1996\/revisions"}],"predecessor-version":[{"id":1997,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/1996\/revisions\/1997"}],"wp:attachment":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/media?parent=1996"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/categories?post=1996"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/tags?post=1996"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}