Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Geplante Ereignisse mit Timerthreads

Frage Entwicklung Java

Mitglied: cranach

cranach (Level 1) - Jetzt verbinden

07.12.2008, aktualisiert 21:27 Uhr, 4500 Aufrufe, 2 Kommentare

Wie setze ich Priorität von Timertask

Hallo,
ich habe eine Tabelle mit den Spalten Veranstaltung, Datum, Uhrzeit und Priorität.
Mein Java-Programm muß zu den dazugehörigen Datum und Uhrzeiten den Namen der Veranstaltung ausgeben.
Ich habe schon sehr viel über Threads gelesen aber sehr weit bin ich nicht gekommen. Ich weiss nicht mal, ob die Idee, das ganze mit Timern zu lösen, richtig ist. Nun habe ich das Problem mit den Prioritäten. Ich kann für die Timer keine Prioritäten setzen. Muß ich etwa das Programm umgestalten und eine Klasse Timer die Schnittstelle Runnable implementieren lassen?
Im Moment sieht mein Programm so aus.
Bin dankbar für jeden Verbesserungsvorschlag

import java.sql.*;
import java. util . Date ;
import java. util . Timer ;
import java. util . TimerTask ;

class Task extends TimerTask implements Runnable
{
static Connection con;
static ResultSet r;
static Statement stmt;
static String drv = "sun.jdbc.odbc.JdbcOdbcDriver";
static String url = "jdbc:odbc:herhangibirsey";
static Timer[] time=new Timer[10];
static TimerTask[] task=new TimerTask[10];
static Thread[] thread=new Thread[10];
static String ereignis;

public static void main(String []args){

try{
Class.forName(drv);
con=DriverManager.getConnection("jdbc:odbc:MS Access Database");
stmt=con.createStatement();

}
catch(Exception ex){
ex.printStackTrace();
}

try{
r=stmt.executeQuery("Select * "+"From Ereignisliste");
int i=0;
while(r.next()){
time[i] = new Timer();
task[i] = new Task ( ) ;
thread[i] =new Thread(task[i]);
Date datum=r.getDate(1);
ereignis=r.getString("Ereignis");
int priorität=Integer.parseInt(r.getString("Priorität"));
thread[i].setPriority(priorität);
time[i].schedule(task[i],datum);
i++;

}
}
catch(Exception ex){
ex.printStackTrace();
}
}

public void run(){

System.out.println(ereignis);
}
}
Mitglied: filippg
07.12.2008 um 20:00 Uhr
Hallo,

warum willst du denn für jedes Ereignis einen eigenen Timer erstellen?
Gängig sind m.E. nach zwei Methoden:
1. Es gibt einene Timer, der zu Beginn jeder Minute ausgeführt wird, und dann checkt, ob es für diese Minute ein Ereignis gibt - sehr einfach zu implementieren.
2. Beim Start wird der Timer mit dem ersten Ereignis initialisiert. Wenn er das ausgeführt hat wird geschaut, wann das nächste Ereignis ist, und der Timer wird auf dieses Ereignis gesetzt. Schon etwas schwieriger zu implementieren, aber sicher die ressourcenfreundlichste Alternative.

1. hat übrigens den Vorteil, dass du zur Laufzeit jederzeit Änderungen an den Terminen vornehmen kannst, ohne bestehende Timer anpassen zu müssen oder neue zu erzeugen. Bei 2. müsste dazu nur geprüft werden, ob sich das nächste Ereignis geändert hat, bei der von dir angestrebten Implementierung ist es kaum möglich ohne alle Timer neu zu erstellen.

Gruß

Filipp
Bitte warten ..
Mitglied: cranach
07.12.2008 um 21:27 Uhr
danke erstmal.

die erste Lösung könnte ich meistern. Nur wo erfahre ich mehr über tImer?In Büchern wird nur nebenbei was über Timer erzählt. HAbe ich wo möglich bei den scheduleXXX methoden die passende Methode übersehen? Dem Timer muß ich tasks als parameter übergeben.Kann ich den Tasks Prioritäten vergeben?
Gruß
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Windows 10
gelöst Windows 10 Administrative Ereignisse (3)

Frage von ex-soldier zum Thema Windows 10 ...

Router & Routing
gelöst Geplante Backups auf Mikrotik Router (8)

Frage von 118080 zum Thema Router & Routing ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (17)

Frage von JayyyH zum Thema Switche und Hubs ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

DSL, VDSL
DSL-Signal bewerten (14)

Frage von SarekHL zum Thema DSL, VDSL ...