{"id":1472,"date":"2012-07-27T12:59:14","date_gmt":"2012-07-27T10:59:14","guid":{"rendered":"http:\/\/www.tutego.de\/blog\/javainsel\/?p=1472"},"modified":"2012-07-27T12:59:14","modified_gmt":"2012-07-27T10:59:14","slug":"inselupdate-lokale-und-innere-anonyme-klasse-fr-einen-timer-nutzen","status":"publish","type":"post","link":"https:\/\/www.tutego.de\/blog\/javainsel\/2012\/07\/inselupdate-lokale-und-innere-anonyme-klasse-fr-einen-timer-nutzen\/","title":{"rendered":"Inselupdate: Lokale und innere anonyme Klasse f&uuml;r einen Timer nutzen"},"content":{"rendered":"<p><strong>Lokale Klasse f\u00fcr einen Timer nutzen<\/strong><\/p>\n<p>Damit die Beispiele etwas praxisn\u00e4her werden, wollen wir uns anschauen, wie ein Timer wiederholende Aufgaben ausf\u00fchren kann. Die Java-Bibliothek bringt hier schon alles mit: Es gilt ein Exemplar von java.util.Timer() zu bilden und der Objektmethode scheduleAtFixedRate(\u2026) ein Exemplar vom Typ TimerTask zu \u00fcbergeben. Die Klasse TimerTask schreibt eine abstrakte Methode run() vor, in die der parallel und regelm\u00e4\u00dfig abzuarbeitende Programmcode gesetzt wird. <\/p>\n<p>Nutzen wir das f\u00fcr ein Programm, welches uns sofort und regelm\u00e4\u00dfig daran erinnert, wie wichtig doch Sport ist:<\/p>\n<p>public class SportReminder {<\/p>\n<p> public static void main( String[] args ) {<\/p>\n<p>&#160; class SportReminderTask extends TimerTask {<\/p>\n<p>&#160;&#160; @Override public void run() {<\/p>\n<p>&#160;&#160;&#160; System.out.println( &quot;Los, beweg dich du faule Wurst!&quot; );<\/p>\n<p>&#160;&#160; }<\/p>\n<p>&#160; }<\/p>\n<p>&#160; new Timer().scheduleAtFixedRate( new SportReminderTask(), 0 \/* ms delay *\/, 1000 \/* ms period *\/ );<\/p>\n<p> }<\/p>\n<p>}<\/p>\n<p>Unser Klasse SportReminderTask, die TimerTask erweitert, ist direkt in main(\u2026) deklariert. Das erzeugte Exemplar kommt sp\u00e4ter in scheduleAtFixedRate(\u2026) und los rennt der Timer, um uns jede Sekunde an die Wichtigkeit von Bewegung zu erinnern. <\/p>\n<p><strong>Nutzung einer anonymen innerer Klassen f\u00fcr den Timer<\/strong><\/p>\n<p>Eben gerade haben wir f\u00fcr den Timer extra eine neue lokale Klasse deklariert, aber genau genommen haben wir diese nur einmal nutzen m\u00fcssen, n\u00e4mlich um ein Exemplar bilden, und scheduleAtFixedRate(\u2026) \u00fcbergeben zu k\u00f6nnen. Das ist ein perfektes Szenario f\u00fcr anonyme innere Klassen. Aus <\/p>\n<p>class SportReminderTask extends TimerTask {<\/p>\n<p> @Override public void run() { \u2026 }<\/p>\n<p>}<\/p>\n<p>new Timer().scheduleAtFixedRate( new SportReminderTask(), \u2026 );<\/p>\n<p>wird<\/p>\n<p>new Timer().scheduleAtFixedRate( new TimerTask() {<\/p>\n<p> @Override public void run() {<\/p>\n<p>&#160; System.out.println( &quot;Los, \u2026&quot; );<\/p>\n<p> }<\/p>\n<p>},<\/p>\n<p>0 \/* ms delay *\/,<\/p>\n<p>1000 \/* ms period *\/);<\/p>\n<p>Im Kern ist es also eine Umwandlung von new SportReminderTask() in new TimerTask() { \u2026 }. Von dem Klassennamen SportReminderTask ist nichts mehr zu sehen, das Objekt ist anonym.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Lokale Klasse f\u00fcr einen Timer nutzen Damit die Beispiele etwas praxisn\u00e4her werden, wollen wir uns anschauen, wie ein Timer wiederholende Aufgaben ausf\u00fchren kann. Die Java-Bibliothek bringt hier schon alles mit: Es gilt ein Exemplar von java.util.Timer() zu bilden und der Objektmethode scheduleAtFixedRate(\u2026) ein Exemplar vom Typ TimerTask zu \u00fcbergeben. Die Klasse TimerTask schreibt eine abstrakte [&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-1472","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\/1472","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=1472"}],"version-history":[{"count":1,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/1472\/revisions"}],"predecessor-version":[{"id":1473,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/1472\/revisions\/1473"}],"wp:attachment":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/media?parent=1472"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/categories?post=1472"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/tags?post=1472"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}