Prüfen, ob ein Bild im Internet vorhanden ist?

Extremefall

Bekanntes Mitglied
Hallo,
ich möchte gerne überprüfen, ob eine Bilddatei unter einer bestimmten URL im Internet vorhanden ist. Ich habe folgende Version momentan programmiert:
Java:
public static boolean istVorhanden(String link){
	URL url = null;
	try {
		url = new URL(link);
	} catch (MalformedURLException e1) {
		// TODO Auto-generated catch block
		e1.printStackTrace();
	}
		try {
		url.openStream().close();
			return true;
		} catch (Exception e) {
			return false;
		} 
}
Nun habe ich allerdings ein Problem mit der Laufzeit. Die Methode an sich funktioniert wie gewünscht. Aber da ich die Methode in einer While Schleife zehntausende Male aufrufen will, suche ich nach einer schnelleren Möglichkeit, zu überprüfen, ob eine Bilddatei im Internet vorhanden ist. Geht es eventuell schneller und wenn ja, wie? Weil so muss natürlich immer erst auf die Exception gewartet werden.
 
B

Beni

Gast
Zusätzlich könntest du mit Multithreading dein Programm beschleunigen. Weil es ziemlich lange dauert bis so eine TCP Verbindung gebaut ist und Daten gesendet wurden, schläft dein Programm die ganze Zeit. Mit mehreren Threads könntest du mehrere URLs gleichzeitig abfragen, wahrscheinlich könntest du damit dein Programm locker 10 mal schneller machen.

Google sollte dir sagen können, was genau ein Thread ist und wie man ihn verwendet.
 

HoaX

Top Contributor
Wenn alle Bilder auf dem selben Server liegen, dann sollte auch der Einsatz von HTTP 1.1 deutlich beschleunigen, da nicht immer die Verbindung neu aufgebaut werden muss. Ich weiß nicht ob URL das macht, HTTPClient von Apache kann es aber iirc.
 

Extremefall

Bekanntes Mitglied
Hallo,
ich habe momentan leider probleme bei der Umsetzung:

Klasse A (in der Main Methode):
Die Variablen sind natürlich alle deklariert und instanziert.
Java:
		while (nr != 4000){
			nr++;
			Thread_Images thread = new Thread_Images();
			thread.start();
			
			System.out.println(nr);
		}
Und der Thread dazu:
Java:
public class Thread_Images extends Thread{
public void run(){
	if (getImages.istVorhanden("http://url_"+getImages.profileid+"_"+getImages.nr+"_n.jpg")){
		System.out.println("Erwischt"+getImages.nr);
	}
	else {
		System.out.println("not");
	}
}
}

Was mache ich falsch beim Multithreading? Wie muss es richtig gehen?
 

Neochronist

Mitglied
Mit deinem gegebenen Code erzeugst du momentan 4000 Threads, die alle ihre run()-Methode abarbeiten und sich dann wieder beenden.
Damit die Threads auch weiterlaufen, ist der zu wiederholende Code in run() in eine (Endlos-)schleife zu packen.
 
Zuletzt bearbeitet:

Extremefall

Bekanntes Mitglied
Hallo,
kannst du mir zeigen, wie der Code dann aussehen muss? Muss ich 4000 Threads für Multithreading erstellen oder wie mache ich das? Ich weiß leider nicht, wie ich es umsetzen muss.
Danke schonmal dafür.
 
B

Beni

Gast
Bei 4000 Threads hast du solch einen Overhead, dass vermutlich garnichts mehr läuft. So zwischen 10 und 20 Thread sollte ein guter Wert sein.

Jeder Thread sollte eine Schleife haben, in der er eine URL nach der anderen abfragt. Um rauszufinden welcher Thread welche URLs verarbeitet, kannst du z.B. eine Methode "public synchronized URL nextURL(){...}" schreiben, welche von allen Threads aufgerufen wird. Die Methode muss in irgendeinem Objekt sein, das allen Threads bekannt ist (pass auf, dass du nicht eine URL mehrfach abfragst, das wäre ziemlich sinnlos).

[Edit: Das kann irgendwie so aussehen
Java:
public class Test{
	private volatile int nr = 0;
	
	public void startThreads(){
		for(int i = 0; i < 20; i++){
			Thread thread = new Thread(){
				public void run(){
					URL next;
					while( (next = nextURL() ) != null ){
						... url lesen ...
						System.out.println("url " + next + ": existiert/existiert nicht");
					}
				}
			};
			thread.start();
		}
	}
	
	public synchronized URL nextURL(){
		return new URL("http://url" + (nr++) + ".jpg");
	}
}
]
 
Zuletzt bearbeitet von einem Moderator:
M

Marcinek

Gast
Ich frage mich, was da nicht läuft.

Hier eine Lösung mit while(true) anzubieten ist glaube ich nicht richtig. Wieso soll ein Thread ewig leben, nachdem er seine Aufgabe abgeschlossen hat?
 

TKausL

Top Contributor
Ich denke die Java-Fragen sind geklärt aber mal was anderes:

Wenn du glück hast Blockt dich der Webserver für X Minuten wenn du versuchst in Rekordzeit 4000 Verbindungen Aufzubauen (DDOS-Schutz)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Wie kann man in Java nach Arrays auf Duplikate prüfen Java Basics - Anfänger-Themen 12
J Schlüsselworte Prüfen, ob ein bestimmtes, ganzes Wort in einem String enthalten ist. Java Basics - Anfänger-Themen 6
Ostkreuz Int Scanner auf Enter Eingabe prüfen Java Basics - Anfänger-Themen 4
S Prüfen ob ein zweidimensionales Array rechteckig ist Java Basics - Anfänger-Themen 4
M Prüfen on eine Zahl im String enthalten ist Java Basics - Anfänger-Themen 3
ravenz Schleife mit for über String Array „zahlen“und prüfen ob Wert „a“ oder „b“ oder „c“ entspricht (mittels || ) Java Basics - Anfänger-Themen 4
Fiedelbambu Prüfen von Komma stelle beim Taschenrechner Java Basics - Anfänger-Themen 5
sserio Prüfen, ob eine Zahl eine periodische Zahl ist Java Basics - Anfänger-Themen 20
I Auf vollen Monat prüfen? Java Basics - Anfänger-Themen 22
A Dateiname auf Vorkommen prüfen Java Basics - Anfänger-Themen 29
I Prüfen, ob Anzahl an Monate ein Jahr ergeben Java Basics - Anfänger-Themen 4
K Warum gibt mir z. B. 40^128 eine Zahl? Ich dachte mit xor kann man nur booleanwerte erhalten, also prüfen ob etwas whar oder falsch ist? Java Basics - Anfänger-Themen 1
W Klasse existiert prüfen Java Basics - Anfänger-Themen 5
Q Prüfen ob Zahl als Summe von Potenzen dargestellt werden kann. Java Basics - Anfänger-Themen 20
U Kann man bei Java gleich mehrere Bedingungen prüfen in der If, aber in einem "Satz"? Java Basics - Anfänger-Themen 1
O Ich ahbe einen char und diesen soll ich bei .matches prüfen, also ob der char in meiner Zeichenkette vorhanden ist, wie mache ich das? Java Basics - Anfänger-Themen 9
B Array nach Wert prüfen rekursiv Java Basics - Anfänger-Themen 5
G Strings auf Gleichheit prüfen - Aufgabe vom Prof. Java Basics - Anfänger-Themen 5
M Array auf Primzahlen prüfen Java Basics - Anfänger-Themen 7
K Wie String prüfen ob drei mal das gleiche Zeichen vorkommt? Java Basics - Anfänger-Themen 7
J ArrayList auf bereits vorhanden eintrag prüfen Java Basics - Anfänger-Themen 5
X Zwei Dimensionales Array prüfen Java Basics - Anfänger-Themen 1
B Prüfen, ob Zeit Überschreitung Java Basics - Anfänger-Themen 2
B Sudoku prüfen Java Basics - Anfänger-Themen 13
M Prüfen auf null ohne NPE Java Basics - Anfänger-Themen 1
X Array auf Leerstellen prüfen Java Basics - Anfänger-Themen 1
FelixN Prüfen, ob ein 2D-Array rechteckig ist Java Basics - Anfänger-Themen 42
C Erste Schritte JComboBox Einträge auf Duplikat prüfen Java Basics - Anfänger-Themen 4
M prüfen ob alle array werte gleich sind Java Basics - Anfänger-Themen 27
C Array auf Null-Inhalte prüfen Java Basics - Anfänger-Themen 9
B Prüfen, ob Country Code in Europa ist? Java Basics - Anfänger-Themen 24
L Prüfen ob Fax (Tif-Datei) vollständig angekommen ist Java Basics - Anfänger-Themen 15
O Datenstruktur auf SET prüfen in O(n) Java Basics - Anfänger-Themen 32
O Einzelne Bits umwandeln und prüfen Java Basics - Anfänger-Themen 23
U Mehrfacheingabe auf bestimmte Parameter prüfen Java Basics - Anfänger-Themen 8
B Prüfen, ob Datum2 der gleiche Tag ist wie Datum1 Java Basics - Anfänger-Themen 10
Dimax Erste Schritte String Eingabe Prüfen Java Basics - Anfänger-Themen 11
S char auf buchstabe/zeichen prüfen Java Basics - Anfänger-Themen 1
S Array doppelter Wert prüfen Java Basics - Anfänger-Themen 7
B Prüfen, ob es schon einen Termin gibt in einem Zeitraum Java Basics - Anfänger-Themen 5
K Linux Speicherplatz mit Java prüfen Java Basics - Anfänger-Themen 4
O Array nach gleichen Zahlen prüfen und ausgeben Java Basics - Anfänger-Themen 6
G Compiler-Fehler Auf Anagramm prüfen Java Basics - Anfänger-Themen 1
B Excel File einlesen und Überschrift prüfen Java Basics - Anfänger-Themen 8
DaCrazyJavaExpert Input/Output Prüfen wie oft etwas eingegeben wurde Java Basics - Anfänger-Themen 2
K Operatoren 2D Int Array auf Null-Referenzen prüfen Java Basics - Anfänger-Themen 18
S Prüfen ob Zelle in Excel leer ist funktioniert nicht (Apache POI) Java Basics - Anfänger-Themen 18
C Klassen Reguläre Ausdrücke auf Gleichheit prüfen Java Basics - Anfänger-Themen 5
M Erste Schritte Java prüfen ob eine der Möglichkeiten erfüllt ist Java Basics - Anfänger-Themen 2
R Auf Nachkommastellen prüfen. Java Basics - Anfänger-Themen 2
P Argumente auf plausibilität prüfen... Java Basics - Anfänger-Themen 8
F LimitedQueue auf Datum prüfen Java Basics - Anfänger-Themen 6
B Passwort prüfen bis eindeutig - while Schleife? Java Basics - Anfänger-Themen 11
Tommy Nightmare Variable auf mehrere Ungleichheiten prüfen Java Basics - Anfänger-Themen 18
B String mit Emailadresse prüfen Java Basics - Anfänger-Themen 11
E 2D Arrays auf Ungleichheit prüfen! Java Basics - Anfänger-Themen 5
MrSnake Prüfen ob TitledPane schon besteht Java Basics - Anfänger-Themen 2
B Serial Key prüfen -> String mit privatem Key und dann abgleichen; Summe = 0 Java Basics - Anfänger-Themen 8
N Compiler-Fehler Iban prüfen Java Basics - Anfänger-Themen 7
J Prüfen ob Arrays nur mit einem Wert belegt sind Java Basics - Anfänger-Themen 3
M String prüfen Java Basics - Anfänger-Themen 7
E Prüfen ob Sammlung gesetzt wurde - Lebensmittelsammlung Java Basics - Anfänger-Themen 8
H Zufällig generierte Zahlen auf Eingabe prüfen Java Basics - Anfänger-Themen 5
S Prüfen ob bestimmter Ordner geöffnet ist (Windows XP) Java Basics - Anfänger-Themen 5
Ruvok Prüfen ob bestimmtest Element existiert im Array Java Basics - Anfänger-Themen 11
DeVolt Java8 Paket Time: Datum prüfen / try-catch Java Basics - Anfänger-Themen 1
W char-Array auf bestimmte Zeichen prüfen Java Basics - Anfänger-Themen 10
S String auf Pallindromeigenschaft prüfen Java Basics - Anfänger-Themen 15
AssELAss Datums-Objekt prüfen ob im gleichen Monat? Java Basics - Anfänger-Themen 5
Screen Input/Output Wie prüfen ob Stream1 in Stream2 enthalten ist (on-the-fly) ? Java Basics - Anfänger-Themen 5
P Seite auf Inhalt prüfen Java Basics - Anfänger-Themen 2
I Prüfen ob Webseite existiert Java Basics - Anfänger-Themen 3
Z Inputs prüfen Java Basics - Anfänger-Themen 6
G Textdatei auf Dubletten prüfen Java Basics - Anfänger-Themen 8
I Prüfen von zwei Listen Java Basics - Anfänger-Themen 1
K zwei Rechtecke auf Berührung prüfen Java Basics - Anfänger-Themen 2
G String auf Format prüfen Java Basics - Anfänger-Themen 3
J Eingabewert übergeben und prüfen von showInputDialog Java Basics - Anfänger-Themen 4
L 6stellige Zufallszahlen erzeugen & auf einzigartigkeit prüfen Java Basics - Anfänger-Themen 3
S Array befüllen & auf doppelte werte prüfen Java Basics - Anfänger-Themen 6
M Prüfen, ob Zeichen eine Zahl ist Java Basics - Anfänger-Themen 3
M Punkt auf eine Farbe prüfen Java Basics - Anfänger-Themen 8
C Datentypen Prüfen of eine Zahl Quadratzahl ist Java Basics - Anfänger-Themen 2
K Eindimensionalen Array prüfen Java Basics - Anfänger-Themen 5
M Konstruktor auf null prüfen, Arrays Java Basics - Anfänger-Themen 9
O Prüfen ob ein String den selben Namen hat wie eine Booleanreihe? Java Basics - Anfänger-Themen 17
J Arrays prüfen und über if Bedingung ausgeben Java Basics - Anfänger-Themen 15
B Interface Generics: prüfen ob Interface deklariert wird Java Basics - Anfänger-Themen 18
L Erste Schritte Einträge in ArrayList prüfen Java Basics - Anfänger-Themen 4
S OOP long prüfen Java Basics - Anfänger-Themen 5
H Prüfen, ob jpg image schon vorhanden ist, bevor es geladen wird Java Basics - Anfänger-Themen 13
L Eine ArrayList auf gleiche Inhalte prüfen Java Basics - Anfänger-Themen 10
Rayo Eingelesene Ascii Zahlen wie normale Zahlen prüfen Java Basics - Anfänger-Themen 4
K HashMap auf leere Key-Value-Paare prüfen Java Basics - Anfänger-Themen 14
N Prüfen ob Objekt existiert Java Basics - Anfänger-Themen 6
I Mehrere ArrayLists mit einer for( : ) Schleife auf Inhalt prüfen Java Basics - Anfänger-Themen 6
A Prüfen ob Datei existiert Java Basics - Anfänger-Themen 9
G Verfügbare Clients prüfen ohne ping Java Basics - Anfänger-Themen 12
P JSP Werte übergeben und prüfen Java Basics - Anfänger-Themen 4
A Anfängerfrage: Zahlformat prüfen Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben