Java Threads und die Zeit

Guten Morgen meine IT-Kollegen,

gerade stieß ich wieder auf ein Problem, welches unter normalen Umständen nicht auftreten sollte: Die Uhrzeit des Hosts ändert sich. Dies sollte bei Programmen die keine Threads haben, oder Threads, die alle paar Stunden einmal ausgeführt werden sollen, in der Regel kein Problem sein. Bei Threads die wichtige Daten alle paar Minuten auswerten / verschieben / löschen sollen, kann dies aber unter Umständen zu dem Problem führen, dass der Thread erst bei der nächsten Uhrzeit ausgeführt wird (Thread.sleep(), Timer und der TimerTask sind hier so Kandidaten).

Zur Veranschaulichung folgende Situation die ich letztens hatte: Ein Programm verschiebt Daten alle X Sekunden (oder sobald eine Datei in ein C:\Pfad landet) auf einen UNC-Pfad. Jetzt wird die nächste Ausführung durch den Timer auf die aktuelle Zeit plus den eingestellten Delay gesetzt. Auf Grund eines Backup-Systems mit einer falschen Uhrzeit, wird die Zeit des Hosts mit der Zeit des Backup-Systems, ein eigenes System mit leider falsch eingestellter Uhrzeit welches von meinem Kollegen verwaltet wird, synchronisiert (sollte nicht passieren, aber das ist ein anderes Thema) und somit um 2 Stunden nachgestellt.

Der Thread wird wieder ausgeführt und setzt die Zeit wieder auf die veränderte aktuelle Zeit plus den vorher eingestellten Delay. Das Backup System wird anschließend fertig und die Zeit wird wieder auf die vorherige zurück gestellt. Jetzt hätten wir auf dem Host beispielsweise 10:00 Uhr, auf dem Backup-System 12:00 Uhr und der nächste Thread würde um 12:02 Uhr anfangen. In den zwei Stunden macht das Programm gar nichts, da der Thread geplant ist und so gesehen kein Fehler zum Auswerfen vorliegt.

So weit dazu.

Dies scheint vor allem an den von Java verwendeten Funktionen zu liegen. Allen voran die Funktion System.currentTimeMillis(). Man könnte nun eigene Klassen und Funktionen schreiben, die statt dieser die Funktion System.nanoTime() verwendet, aber dann müsste man die damit zusammenhängenden Funktionen auch neu schreiben und da diese leider meist private deklariert wurden die entsprechenden Klassen gleich mit dazu.

Sowas mache ich meist eher ungern 😉

Eine gute Möglichkeit für den Ersatz von java.util.Timer (oder entsprechender anderer Klasse) ist ein ScheduledThreadPoolExecutor. Dies könnte in Verwendung in etwa wie folgt aussehen:

Ist natürlich nur ein Beispiel. Man könnte unter anderem die return Werte von scheduleAtFixedRate() in einem Future Array speichern und dann abfragen, aber das gehört in einen anderen Beitrag 😉

Viel Spaß beim Programmieren

Lukas

Netzteil Kurzschließen

Guten Morgen,

da ich die Darstellung letztens wieder gesucht habe, hier eine kleine Übersicht des Anschlusses:

Darstellung zum Kurzschließen des Netzteiles

Darstellung zum Kurzschließen des Netzteiles

Nun einfach PS_ON mit Masse verbinden (dazu könnt ihr euch einen aussuchen, ich nehme meist in 16/18, ist für mich am praktischsten). Vielleicht könnt ihr damit ja etwas anfangen.

Wünsche euch allen einen sonnigen Montag.

Lukas

Diese Veranstaltung ist geschlossen

Hach ja, programmieren ist doch etwas schönes. Alles funktioniert ohne Probleme und keiner übt Druck auf einen aus beispielsweise um etwas zu beheben, was einwandfrei funktioniert. Alles harmoniert und ich liege faul auf dem Sofa und lass die Gedanken schweifen…

Scherz beiseite 🙂

Seit neuestem kriege ich ab und an eine „ClosedByInterruptException„. Das kommt meistens daher, dass es Threads gibt die sich alle gleichzeitig für die größten halten. Fast wie so ein Kollege von mir, aber das ist ein anderes Thema. In meinem Fall tritt es bei Dateioperationen auf (beim Threading immer eine schwierige Geschichte).

Weiterlesen

Kurzmitteilung

Game Development

Moin,

habe gerade mal ein wenig im Internet gestöbert. Diese Liste auf Reddit könnte für manche zukünftige Entwickler eine gute Anlaufstelle sein. Darunter auch der Hinweis, dass man möglichst mit Pong und Super Mario Bros. als Grundlage anfangen sollte.

Daher versuche ich mich die Tage mal an diesen beiden Spielen und werde diese neben anderen Tests auf folgender Seite hochladen:

Lukas Kurth Rocks Games

Wer Lust hat, darf sich meine Fehl-Versuche – und den einen oder anderen Test – daher auch gerne einmal anschauen und mir Feedback geben. Soweit von mir…

Lukas

Weitere Studienpläne

Hey Guys,

ich hatte ja schon einmal über Spiele-Programmierung geschrieben (mit starkem Bezug auf Party Spiele). Da mein Fernstudium nun seit geraumer Zeit abgeschlossen ist, sitze ich hier, auf der Suche nach einer neuen, machbaren Herausforderung (die möglichst auch Spaß machen sollte).

Da ich ja bereits beim ILS war, habe ich zuerst hier gesucht und bin gleich auf den Studiengang Geprüfte/r 3D-Spieleentwickler/in (ILS) mit Unity gestoßen. Unity fand ich schon immer klasse und C# ist dank meinem Fernstudium zum WI auch kein Problem (hatte mehr mit Java zu tun, aber die beiden Sprachen liegen ja nicht ganz so weit auseinander).

Ob ich so ein Studium wirklich wagen sollte? 133€/Monat auf 15 Monate klingen jetzt auch nicht so teuer, aber vielleicht sollte ich mir dennoch etwas ansparen. Zudem wäre da ja auch die Frage wie der Studiengang angesehen wird.

Edit: Hier die Download-Seite für das Studium

Möglicherweise sollte ich auch einfach die Microsoft Zertifizierungen in Betracht ziehen. Gibt ja auch noch ein paar andere IT-Zertifikate die definitiv in Frage kommen würden. Auch die – zumindest für mich – neue Seite der CELS (certified by professinals) sollte ich wohl mal ausprobieren. Hier können Zertifikate für bestimmte Fertigkeiten ausgestellt werden. Und das, im Gegensatz zu den meisten anderen Zertifikaten, völlig kostenfrei.

Vielleicht sollte ich demnächst mal wieder mit meinem Vater sprechen 😛

Bis dahin

Was nun?

Guten Morgen meine Nicht-Leser 😉

seit ein paar Wochen ist mein Fernstudium beim ILS nun vorbei. Das Zertifikat ist mittlerweile auch eingetroffen. Seminare mit 1,0, Studium selbst mit 1,1 abgeschlossen. Damit bin ich jetzt „Wirtschaftsinformatiker (ILS)“. Yeah!

Die Frage die sich jetzt stellt: Wie mache ich am Besten weiter?

Vor ein paar Jahren hatte ich mir dazu folgendes überlegt: Erst den WI beim ILS machen und dann den BSC in Informatik bei der FU Hagen dran hängen (und anschließend eventuell noch den Master und / oder noch den Doktor). Leider machen mir hier ein paar „kleinere“ Sachen einen Strich durch die Rechnung:

  • Zeit
    • Wenn ich Vollzeit arbeite, ist selbst die Teilzeit-Variante mit 20 Stunden pro Woche zu viel. Vor allem, da sich die Studienzeit damit auf sechs Jahre erhöht.
    • Vollzeit mit 40 Stunden käme logischerweise gleich gar nicht in Frage.
  • Geld
    • Wenn ich nicht Vollzeit arbeiten würde / meine Arbeit kurzzeitig aussetzen würde, hätte ich zwar die Zeit, aber kein Geld. Und damit meine ich nicht nur das Geld für das Studium (bei der FU Hagen ziemlich preiswert), sondern alles was ich mittlerweile als Lauf-Kosten habe (Versicherungen, Miete, Nahrung) etc. Sowas bezahlt mir leider keiner (mehr).
  • Geduld / Motivation
    • Gerade bei 6(!) Jahren darf die Motivation nicht auf der Strecke bleiben. Man muss am Ball bleiben um den Abschluss zu schaffen. Die drei Jahre kriegt man dagegen meistens irgendwie hin 😛

Falls ihr irgendwelche Ideen haben solltet, wie ich den BSC in Informatik dennoch holen könnte, könnt ihr es mich gerne wissen lassen. Ansonsten werde ich mich nach alternativen oder anderen Studienrichtungen umsehen müssen (da hätte ich auch schon eine Idee…).