Hi,
also ich habe in java ein programm geschrieben das mit 48Threads läuft und jeder Thread eine Liste mit 1000 URLs abarbeiten soll. Und zwar soll für jede URL die erste Seite im HTML-Format gespichert werden, sprich in eine .txt Datei geschrieben werden. nun alles wäre kein problem wenn die bearbeitung bei manchen threads nicht stocken würde. Natürlich habe ich viele Exceptions mit try und catch abgefangen. Ich habe mit
alle mölichen Exceptions herausgefunden und das Programm um diese catch Klauseln erweitert.
Nun das Problem ist das mein Programm bei manchen Domains stockt und die jeweilige Liste nicht weiter abgearbeitet wird. Und wenn das Programm im jeweiligen Thread stockt, wird keine Exception gemeldet mit dem oben beschriebenen
Codeteil. Nun das erscheint mir sonderbar, aber als Lösung habe ich mir überlegt ich könnte jeder URL eine maximale Rechenzeit zu Verfügung stellen, zum Beispiel 30 sec. Aber dazu müßte ich in der while schleife die die URLs auslist eine endlosschleife einbauen, die permanent überprüft ob die 30sec schon abgelaufen sind.
Mir erscheint meine Lösung als ziemlich schlecht da die endlosschleifen ziemlich viel Systemlast verursachen und deshalb wollte ich fragen ob jemand von euch einen besseren Lösungsansatz kennt?
Danke im Voraus
Gaston
also ich habe in java ein programm geschrieben das mit 48Threads läuft und jeder Thread eine Liste mit 1000 URLs abarbeiten soll. Und zwar soll für jede URL die erste Seite im HTML-Format gespichert werden, sprich in eine .txt Datei geschrieben werden. nun alles wäre kein problem wenn die bearbeitung bei manchen threads nicht stocken würde. Natürlich habe ich viele Exceptions mit try und catch abgefangen. Ich habe mit
Code:
try{
//Aktion
}
catch(Exception e)
{
System.out.println(e.toString());
System.out.println(e.getMessage());
e.printStackTrace();
}
alle mölichen Exceptions herausgefunden und das Programm um diese catch Klauseln erweitert.
Nun das Problem ist das mein Programm bei manchen Domains stockt und die jeweilige Liste nicht weiter abgearbeitet wird. Und wenn das Programm im jeweiligen Thread stockt, wird keine Exception gemeldet mit dem oben beschriebenen
Codeteil. Nun das erscheint mir sonderbar, aber als Lösung habe ich mir überlegt ich könnte jeder URL eine maximale Rechenzeit zu Verfügung stellen, zum Beispiel 30 sec. Aber dazu müßte ich in der while schleife die die URLs auslist eine endlosschleife einbauen, die permanent überprüft ob die 30sec schon abgelaufen sind.
Code:
while(true)
if(abarbeitungszeit>30)
{
break;
}
Mir erscheint meine Lösung als ziemlich schlecht da die endlosschleifen ziemlich viel Systemlast verursachen und deshalb wollte ich fragen ob jemand von euch einen besseren Lösungsansatz kennt?
Danke im Voraus
Gaston