Threads zum Verringern der Latenzzeiten bei HTTP GET Request

Status
Nicht offen für weitere Antworten.
A

Apraxus

Gast
Hi,

ich hab mich gefragt, ob man Threads nicht auch dazu nutzen kann die Latenzzeit bei Webanwendungen zu umgehen.
Das heißt konkret, dass ich wenn eine Seite geladen wird ein anderer Thread die nächste Seite vorlädt und dann bereitstellt.

Ich habe versucht das ganze Thread Prinzip in den letzten zwei Tagen soweit in meine Anwendung zu integrieren, dass diese damit umgehen und das ganze auch verarbeiten kann. Hier im Forum gab es ja auch schon ein paar Hinweise und Fragen zu diesem Thema. :?:


Da meine Anwendung zuerst ein Login benötigt, finde ich es ein wenig komplizierter wie die ganzen restlichen Anwendungen die hier so herumgeistern. Ich bin auch dazu übergegangen nicht die einzelnen Seiten ansich in Threads wie in einer Warteschleife zu laden, sondern das Abarbeiten einer ganzen Sequenz von Anweisungen.

Code:
package com.vit.crawler.launch;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.SocketException;

import java.sql.Connection;
import java.sql.SQLException;

import java.util.Collection;
import java.util.EmptyStackException;
import java.util.Iterator;
import java.util.Properties;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

import org.apache.commons.httpclient.HttpClient;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import com.vit.crawler.CClient;
import com.vit.crawler.CLogin;

import com.vit.db.DB_Object;
import com.vit.db.DB_UIDS;
import com.vit.dto.DTO_UIDS;

import com.vit.util.CRead;
import com.vit.util.CTimer;


/**
 * CCrawler.class
 * 
 * The Crawler Class is the main starting JAVA class file for the Visualize.It
 * crawler. So do your settings and have fun!
 */
public class CCrawlerProfileThread
{
	private static final Log LOG = LogFactory.getLog(CCrawlerProfileThread.class);
	private static String MAIN_PROPERTIES = "src/properties/main.properties";
	private static String USER_PROPERTIES = "src/properties/user.properties";
	
	//Thread implements Runnable
	//shows the available processors installed at the System
	int processorsNum = Runtime.getRuntime().availableProcessors();
	//starts two threads, for each processor
	ExecutorService executor = Executors.newFixedThreadPool(processorsNum); 
	
	/**
	 * The Main Method
	 * @param args
	 */
	public static void main(String[] args) 
	{
		CTimer tt = new CTimer();
		long time_start = tt.getTime();
		
		Properties props_main = new Properties();
		
		try {
			props_main.load(new FileInputStream(MAIN_PROPERTIES));
			   
		} catch (FileNotFoundException e) {
			if(LOG.isErrorEnabled())
				LOG.error("com.vit.crawler.CClient\n --> propertiesfiles not found:\n --> " + e.toString());
		} catch (IOException e) {
			if(LOG.isErrorEnabled())
				LOG.error("com.vit.crawler.CClient\n --> proplems while loading the propertiesfiles:\n --> " + e.toString());
		}
		
		int reconnect = Integer.parseInt(props_main.getProperty("reconnect"));
		while(reconnect >= 0)
		{
			try {
				CCrawlerProfileThread cpt = new CCrawlerProfileThread();
				boolean t = false;
				t = cpt.start();
				System.out.println("\n\n ---\nDurchgang erfolgreich?: " + t + " \n---\n\n");
			
			}catch (SocketException e) {
				LOG.fatal("SOCKETEXCEPTION: " + e.toString());
				System.out.println("\n---\nSocketExceptionHandling\n---\n");
				main(null);
			}catch (NullPointerException e) {
				LOG.fatal("NULLPOINTEREXCEPTION: " + e.toString());
				System.out.println("\n---\nNullPointerExceptionHandling\n---\n");
				main(null);
			}catch (EmptyStackException e){
				long time_end = tt.getTime();
				tt.calculateTime(time_start, time_end);
				System.out.println("JOB CRASHED ");
				e.printStackTrace();
				System.exit(1);
			}catch (RuntimeException e){
				long time_end = tt.getTime();
				tt.calculateTime(time_start, time_end);
				System.out.println("JOB CRASHED ");
				e.printStackTrace();
				System.exit(1);
			}
			
			reconnect--;
			System.out.println("\n\n --- ---- --- \n Reconnects: " + reconnect + " \n --- --- --- \n\n");
		}
		
		long time_end = tt.getTime();
		tt.calculateTime(time_start, time_end);
		System.out.println("JOB COMPLETED");
		System.exit(0);
		
	}//main()

	/**
	 * Start the Profile-Crawler
	 */
	public boolean start() throws SocketException, NullPointerException
	{
		LOG.info("com.vit.crawler.launch.CCrawler");

		HttpClient httpClient = null;
		CLogin login = new CLogin();
		
		// get the needed information out of the properties file
		Properties props_main = new Properties();
		Properties props_user = new Properties();
		
		try {
			props_main.load(new FileInputStream(MAIN_PROPERTIES));
			props_user.load(new FileInputStream(USER_PROPERTIES));
			   
		} catch (FileNotFoundException e) {
			if(LOG.isErrorEnabled())
				LOG.error("com.vit.crawler.CClient\n --> propertiesfiles not found:\n --> " + e.toString());
		} catch (IOException e) {
			if(LOG.isErrorEnabled())
				LOG.error("com.vit.crawler.CClient\n --> proplems while loading the propertiesfiles:\n --> " + e.toString());
		}
		
		// prepare the variables
		int selectedUser = Integer.parseInt(props_user.getProperty("selecteduser"));
		String id = "";
		String nid = "";
		
		switch(selectedUser)
		{
			case 0:      id = props_user.getProperty("id");
					nid = props_user.getProperty("nid");
					System.out.println("User 0");
					break;
			case 1:      id = props_user.getProperty("id1");
					nid = props_user.getProperty("nid1");
					System.out.println("User 1");
					break;

			default: 
					id = props_user.getProperty("defaultid");
					nid = props_user.getProperty("defaultnid");
					System.out.println("User Default");
					break;
		}
		
		String loggedin_uid = id;
		
		// do the login at the community site
		String cookieValue = login.doLogin(selectedUser);
	    
		// get a normal HTTPVItClient
		httpClient = CClient.getHttpVItClient();
	    
	    // crawl profiles
		Connection cn = null;
		int crawls = Integer.parseInt(props_main.getProperty("crawls"));
		int schleife = 0;
		
		try {
			cn = new DB_Object().get_Connection();
			// get crawlable profiles from database
			DB_UIDS dbuid = new DB_UIDS();
			Collection col = null;
			
			// number of crawls
			for(int i = 0; i < crawls; i++)
		    {
				
				col = dbuid.getUserArrayToCrawlThread(cn, loggedin_uid);
				Iterator itr = col.iterator();

				// profiles to crawl.
				while(itr.hasNext())
				{
					DTO_UIDS dto = (DTO_UIDS) itr.next();
					
					// allocation
					id = String.valueOf(dto.getUser_UID());
					
					CCrawlerThreadFriends ctf = new CCrawlerThreadFriends(id, httpClient, cookieValue, cn, loggedin_uid, dbuid);
					this.executor.execute(ctf);
					
					schleife++;
					System.out.println("\n\n --- ---- --- \n Anzahl Schleife: " + schleife + " \n --- --- --- \n\n");
				}//while
				schleife = 0;
				System.out.println("\n\n --- ---- --- \n Anzahl: " + i + " \n --- --- --- \n\n");
		    }//for		
				
				
		    new DB_Object().close_Connection(cn);
		    
		} catch (SQLException e) {
			LOG.error("" + e.toString());
		}
		
		return true;
	
	}//start()
	
}//class

/**
 * Thread class for the ProfileCrawler of Visualize.it
 * The class implements Runnable and is controlled by the 
 * Java ExecutorService ...
 */
class CCrawlerThreadFriends implements Runnable
{
	private static final Log LOG = LogFactory.getLog(CCrawlerThreadFriends.class);
	private static boolean status = false;
	
	private String id;
	private HttpClient httpClient;
	private String cookieValue;
	private Connection cn;
	private String loggedin_uid;
	private DB_UIDS dbuid;
	
	public CCrawlerThreadFriends(String id, HttpClient httpClient, String cookieValue, 
			 Connection cn, String loggedin_uid, DB_UIDS dbuid)
	{
		this.id = id;
		this.httpClient = httpClient;
		this.cookieValue = cookieValue;
		this.cn = cn;
		this.loggedin_uid = loggedin_uid;
		this.dbuid = dbuid;
	}
	
	public void run()
	{
		try
		{
		    // prepare profile site
		    String nextProfile = "/profile.php?id=" + id;
		    
		    // prepare friends site
		    String friendsURL = "/friends.php?id=" + id + "&nk=0";
	
		    System.out.println("ID: " + id +" AND URLS: " + nextProfile + " " + friendsURL);
		    
		    // write result to database - id specifies the current user
		    StringBuffer sbprofile = CClient.httpGetSiteProfile(httpClient, nextProfile, cookieValue, id);
			
		    // parse profile personal information
		    CRead.parsePersonalInfoFromProfile(cn, sbprofile.toString(), id);
		    
		    // parse network information
		    CRead.parsePersonalNetwork(cn, sbprofile.toString(), id);
		    
		    // parse profile groups
		    CRead.parseGIDsFromProfile(cn, sbprofile.toString(), id);
		    
		    // parse education info
		    CRead.parseEducationInfoFromProfile(cn, sbprofile.toString(), id);
		    
		    // parse work info
		    CRead.parseWorkInfoFromProfile(cn, sbprofile.toString(), id);
		   
		    // parse friends from profiles and write result to database
		    // -> loggedin_uid specifies the current logged in user
		    // -> id specifies the user id of the profile that is crawled at the moment
		    StringBuffer sbfriends = CClient.httpGetSiteFriends(httpClient, friendsURL, cookieValue);
			CRead.parseUserFriendsFromProfile(cn, sbfriends.toString(), id, loggedin_uid, 1, httpClient, cookieValue);
		    
			// update crawled profile entries
			boolean b = dbuid.updateUserArrayToCrawl(cn, id, loggedin_uid);
			System.out.println("SET USER TO 1: " + b);
			
			if(LOG.isDebugEnabled())
				LOG.debug("STATUS PROFILE: " + status);
			
		} catch (Exception e){
	        System.err.println ("Exception Fehler");
	        e.printStackTrace();
	    }
	}
}//class

Die Threads sind hierbei nur irgendwie so schnell, dass das durchführen der gesamten Anweisungen aus der run() Methode nicht mehr durchgeführt wird. Die Ausgabe des System.out.println() wird noch vollbracht

Das hier sind die Fehler die ich erhalte:

Code:
8345 [pool-1-thread-1] INFO  com.vit.crawler.CClient  - com.vit.crawler.CClient.httpGetSiteProfile()
8346 [pool-1-thread-2] INFO  com.vit.crawler.CClient  - com.vit.crawler.CClient.httpGetSiteProfile()
8349 [pool-1-thread-2] WARN  org.apache.commons.httpclient.SimpleHttpConnectionManager  - SimpleHttpConnectionManager being used incorrectly.  Be sure that HttpMethod.releaseConnection() is always called and that only one thread and/or method is using this connection manager at a time.
8938 [pool-1-thread-1] FATAL com.vit.crawler.CClient  - IOEXCEPTION: org.apache.commons.httpclient.ProtocolException: Unable to parse header: hre=t-8
8939 [pool-1-thread-2] FATAL com.vit.crawler.CClient  - IOEXCEPTION: java.net.SocketException: socket closed

... und danach wird das laden der Seite schon mit einigen Exceptions abgebrochen. ...

Weiterhin gibt es dann noch ein paar NullPointerExceptions, sowie IllegalState und ProtocolExceptions. Diese bauen meiner Meinung nach aber auf den oben geposteten Fehlern auf...
Na ja und wenn ich das ganze mit noch mehr als 2 Threads laufen lassen würde gibt es noch mehr und noch schneller Fehler.

Wenn ich das ganze ohne Threads ausführe komme ich wunderbar zu dem gewünschten Ergebnis.
Kann mir von euch vielleicht jemand Helfen.

Schon mal danke im Vorraus.

Ah... vielleicht sollte ich noch dazusagen, dass das DTO Objekt im Moment ca. 40 ids an die while Schleife liefert, welche letztendlich den Thread bzw. das Runnable aufruft.
 
M

maki

Gast
SimpleHttpConnectionManager being used incorrectly. Be sure that HttpMethod.releaseConnection() is always called and that only one thread and/or method is using this connection manager at a time.
Tja, sieht so aus als ob die Connection nicht von mehreren Threads benutzt werden darf.
 
A

Apraxus

Gast
tja und was kann ich da machen.
Die release Method wird auf jedenfall noch aufgerufen.

Wie benutze ich den SimpleHttpConnectionManager denn richtig?
bzw. ich war mir gar nicht bewusst, dass ich den SimpleHttpConnectionManager überhaupt verwende. Wird der von einer Unterklasse aufgerufen?
 
M

maki

Gast
Was passiert hier?
Code:
httpClient = CClient.getHttpVItClient();
 
A

Apraxus

Gast
Na es erzeugt ein httpClient Object mit den Configurations

Code:
	public static HttpClient getHttpVItClient() 
	{
		LOG.info("com.vit.crawler.CClient.getHttpVItClient()");
		
		// get the needed information out of the properties file
		Properties props_main = new Properties();
		
		try {
			props_main.load(new FileInputStream(MAIN_PROPERTIES));
			   
		} catch (FileNotFoundException e) {
			if(LOG.isErrorEnabled())
				LOG.error("com.vit.crawler.CClient\n --> propertiesfiles not found: \n --> " + e.toString());
		} catch (IOException e) {
			if(LOG.isErrorEnabled())
				LOG.error("com.vit.crawler.CClient\n --> proplems while loading the propertiesfiles:\n --> " + e.toString());
		}
		   
		// set host, port and protocol
		String host 	= props_main.getProperty("host");
		int iport 		= Integer.parseInt(props_main.getProperty("port"));
		String protocol = props_main.getProperty("protocol");
		   
		HttpClient httpClient = null;
		HostConfiguration conf = null;  
		 
		try {
			httpClient = new HttpClient();
			conf = httpClient.getHostConfiguration();
			 
			// set the host configuration data
			conf.setHost(host, iport, protocol);
			httpClient.setHostConfiguration(conf);
			 
			// set the host timeout parameter and the cookie policy
			httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(30000);
			httpClient.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY);
		
		} catch(Exception e) {
			if(LOG.isErrorEnabled())
				LOG.error("com.vit.crawler.CClient\n --> problems while setting the host configuration data:\n --> " + e.toString());
		}
		 
		return httpClient;
	 
	 }//getHttpVItClient()
 
A

Apraxus

Gast
glaub ich hab fast eine lösung. du hast mich auf eine idee gebracht.
wenn es funktioniert poste ich es hier.

bin aber dennnoch für weitere anregungen dankbar.
 
M

maki

Gast
An deiner Stelle würde ich pro Thread einen HttpClient erzeugen.
Der SimpleHttpConnectionManager ist er Standard ConnectionManager wenn kein anderer angeben wurde, siehe API Doc.
 
A

Apraxus

Gast
Das mit dem Threading hab ich jetzt glaub ich soweit hinbekommen.
Hab jetzt ein anderes Problem ... nach zwei Seitenaufrufen werde ich wieder ausgeloggt !

Code:
public static HttpClient getHttpVItClientThreaded() 
	{
		LOG.info("com.vit.crawler.CClient.getHttpVItClient()");
		
		// get the needed information out of the properties file
		Properties props_main = new Properties();
		
		try {
			props_main.load(new FileInputStream(MAIN_PROPERTIES));
			   
		} catch (FileNotFoundException e) {
			if(LOG.isErrorEnabled())
				LOG.error("com.vit.crawler.CClient\n --> propertiesfiles not found: \n --> " + e.toString());
		} catch (IOException e) {
			if(LOG.isErrorEnabled())
				LOG.error("com.vit.crawler.CClient\n --> proplems while loading the propertiesfiles:\n --> " + e.toString());
		}
		   
		// set host, port and protocol
		String host 	= props_main.getProperty("host");
		int iport 		= Integer.parseInt(props_main.getProperty("port"));
		String protocol = props_main.getProperty("protocol");
		   
		HttpClient httpClient = null;
		HostConfiguration conf = null;  
		 
		try {
			MultiThreadedHttpConnectionManager manager = new MultiThreadedHttpConnectionManager();
			HostConfiguration hostConfig = new HostConfiguration();
			
			hostConfig.setHost(host, iport, protocol);
			
			manager.getConnectionWithTimeout(hostConfig, 30000);
			manager.getConnectionWithTimeout(hostConfig, 30000);
			
			//get connection pool
			int num = manager.getConnectionsInPool();
			System.out.println("# of Connections in the pool: " + num);

			
			httpClient = new HttpClient(manager);
			conf = httpClient.getHostConfiguration();
			 
			// set the host configuration data
			conf.setHost(host, iport, protocol);
			httpClient.setHostConfiguration(conf);
			 
			// set the host timeout parameter and the cookie policy
			httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(30000);
			httpClient.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY);
		
		} catch(Exception e) {
			if(LOG.isErrorEnabled())
				LOG.error("com.vit.crawler.CClient\n --> problems while setting the host configuration data:\n --> " + e.toString());
		}
		 
		return httpClient;
	 
	 }//getHttpVItClient()


Hab ich das mit dem ConnectionPool richtig gemacht? Verstanden? Muss ich die Verbindungen selbst auchmachen oder kann er das auch bei bedarf automatisch. Weil dann würde es ja ausreichen, wenn ich manager.getConnectionWithTimeout(...) einmal aufrufe.
 

DocRandom

Top Contributor
Moin!

..guck Dir mal HTTPUnit an, da hast Du ein WebConversations-Object (Simuliert den Browser) und von diesem ableitend, WebResponse-Objekte (jede Site ein WebResponse).

lg
DocRandom
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
rode45e Java Threads Allgemeine Java-Themen 4
M Threads Allgemeine Java-Themen 1
L Threads Threads in Chatroom Allgemeine Java-Themen 30
berserkerdq2 run-methode eines Threads so programmieren, dass 30x die Sekunde etwas ausgeführt wird. Allgemeine Java-Themen 44
berserkerdq2 Threads, wie genau läuft das in Java ab? (Ich kann Threads erstellen und nutzen, nur das Verständnis) Allgemeine Java-Themen 6
CptK Backpropagation parallelisieren: Kommunikation zwischen den Threads Allgemeine Java-Themen 7
J Eine Frage zu den Threads und Task Allgemeine Java-Themen 1
W Wieviele Threads sind sinnvoll? Allgemeine Java-Themen 8
W Alternative für Threads Allgemeine Java-Themen 6
V Threads Probleme beim Aufrufen von Methoden einer anderen Klasse (Threads) Allgemeine Java-Themen 14
T Multithreading: Wie viele Threads sollte ich erstellen? Allgemeine Java-Themen 12
G Threads vom Mainprogramm steuern Allgemeine Java-Themen 8
S BlockingQueue mit dynamischer Anpassung der Anzahl von Producer und Consumer Threads Allgemeine Java-Themen 1
x46 Threads Threads anhalten Allgemeine Java-Themen 1
J Threads verbessern die Performance NICHT ? Allgemeine Java-Themen 8
W Threads Problem Allgemeine Java-Themen 15
T Threads Tic Tac Toe mit Threads Allgemeine Java-Themen 1
M Threads über Kommandozeile Allgemeine Java-Themen 5
mrbig2017 Threads Chat Programm mit Threads? Allgemeine Java-Themen 2
J Threads - java.lang.IllegalThreadStateException Allgemeine Java-Themen 6
J Internet Broswer in Threads öffnen Allgemeine Java-Themen 1
B Threads Multithreading Threads sollen warten Allgemeine Java-Themen 12
N 1000 MQTT Messages die Sekunde - 1000 Threads erstellen ? Allgemeine Java-Themen 10
D Threads Parallel laufende Threads Allgemeine Java-Themen 4
J Unvorhersehbares Verhalten - benutze ich die falsche Bedingungsprüfung oder brauche ich Threads? Allgemeine Java-Themen 12
D Eine Forschleife mit Threads abarbeiten um es zu schneller zu machen. Ist das möglich? Allgemeine Java-Themen 20
S Wie kann ich eine kleine Stelle in meinem Code mit multiplen Threads abarbeiten..? Allgemeine Java-Themen 20
P Threads Parallelisierte DB-Abfragen mit variabler Anzahl an Threads Allgemeine Java-Themen 4
J Threads Threads Allgemeine Java-Themen 9
Viktim Threads Liste In unterschiedlichen Threads bearbeiten Allgemeine Java-Themen 23
E Threads Ausführung in Threads ist langsamer als ohne Threads Allgemeine Java-Themen 13
A Anzahl an Threads Systemweit Allgemeine Java-Themen 2
Tausendsassa Input/Output Problem mit der gleichzeitigen Ausgabe zweier Threads Allgemeine Java-Themen 8
S Alle Methodenaufrufe eines Threads notieren..? Allgemeine Java-Themen 7
M Threads JPanel eingeforen mit Threads Allgemeine Java-Themen 2
F Threads Allgemeine Java-Themen 6
F Threads Allgemeine Java-Themen 2
M Sinn von Threads? Allgemeine Java-Themen 1
J Wie erschaffe ich einen sicheren Datenaustausch zwischen Thread und Nicht-Threads Allgemeine Java-Themen 8
L Abfragen ob Threads fertig Allgemeine Java-Themen 3
P Threads Java Zugreifen Allgemeine Java-Themen 6
K Problem: Java-Klasse mit mehreren Threads als eigenen Prozess starten Allgemeine Java-Themen 3
K KeyEvent in Threads Allgemeine Java-Themen 11
V Threads Weshalb funktionieren meine Threads nicht? Allgemeine Java-Themen 2
Thallius Speicherverhalten von Properties und mehreren Threads Allgemeine Java-Themen 5
L Threads beenden Allgemeine Java-Themen 4
P Threads Threads nicht gleichzeitig starten Allgemeine Java-Themen 3
S Threads Threads werden nicht beendet Allgemeine Java-Themen 2
S Start des zweiten Threads erst nach Beenden des ersten Threads Allgemeine Java-Themen 13
N Threads statische Methoden in Threads Allgemeine Java-Themen 5
P 4 Threads in einer Methode Allgemeine Java-Themen 2
M Eclipse Mehrere Threads, mehrere Konsolen Allgemeine Java-Themen 4
OnDemand Threads und synchronized Allgemeine Java-Themen 9
R LinkedList und Threads: Strukturprobleme bez. löschen von Elementen Allgemeine Java-Themen 3
R LinkedList und Threads - welche Methode ist besser? Allgemeine Java-Themen 2
OnDemand Threads und synvhronized Allgemeine Java-Themen 2
S Problem mit Threads Allgemeine Java-Themen 1
W Threads Threads warten lassen Allgemeine Java-Themen 5
H Optimierung durch Threads Allgemeine Java-Themen 31
B Threads halten sich irgendwie auf... Allgemeine Java-Themen 6
M Threads Allgemeine Java-Themen 8
K JNI: Methoden aus unterschiedlichen Threads aufrufen Allgemeine Java-Themen 3
A Applet Alle Threads beim schließen des Applets beenden Allgemeine Java-Themen 8
A Problem mit der Synchronisierung von Threads Allgemeine Java-Themen 15
R SecurityManager für einzelne Klassen/Threads? Allgemeine Java-Themen 38
O Threads und If Befehle Allgemeine Java-Themen 7
P Threads abwechseln lassen mit wait() und notify() Allgemeine Java-Themen 2
H Sehr viele Threads effizient Verwalten Allgemeine Java-Themen 13
C Threads und Exceptions Allgemeine Java-Themen 7
H java.lang.OutOfMemoryError bei der wiederholten Erzeugng von Threads Allgemeine Java-Themen 8
S Threads Abarbeitungsstatus von Threads in Datei schreiben Allgemeine Java-Themen 2
M Zugriff zweier Threads auf diesselbe Methode Allgemeine Java-Themen 16
E Threads Sudoku Threads Allgemeine Java-Themen 8
M Java Threads - Wait Notify - Verständnisproblem Allgemeine Java-Themen 5
Gossi Threads mit unterschiedlichen Aufgaben in einer Klasse? Allgemeine Java-Themen 9
G Threads Ablauf von Threads im Spezialfall Allgemeine Java-Themen 4
V Threads bei quadcore Allgemeine Java-Themen 10
V 1000 Threads oder Iterativ? Allgemeine Java-Themen 11
4 Simple(?) Frage zu Threads Allgemeine Java-Themen 14
B Threads Game of Life - Threads Allgemeine Java-Themen 49
R Threads Exceptions von Threads abfangen im ThreadPool Allgemeine Java-Themen 5
S Threads Ende sämtlicher Threads abwarten Allgemeine Java-Themen 6
S Frage zu Threads (Sichtbarkeit und Verhalten) Allgemeine Java-Themen 11
M Java-Threads und Datentypen-Zugriffe Allgemeine Java-Themen 7
P Threads- Programming Allgemeine Java-Themen 2
G Threads Klasse Sound und Threads bleiben hängen Allgemeine Java-Themen 4
C Threads Zwei Threads greifen auf LinkedList zu. Allgemeine Java-Themen 12
M OutOfMemoryError in nebenläufigen Threads Allgemeine Java-Themen 6
M Threads dauerhafte bewegung mit threads Allgemeine Java-Themen 11
frankred Threads Auf eine Gruppe von Threads warten Allgemeine Java-Themen 11
J Eure Meinung: Threads verwenden, oder nicht? Allgemeine Java-Themen 6
K Warum wartet diese Funktion auf beenden des Threads? Allgemeine Java-Themen 3
F Mehrere Threads - ein Stack Allgemeine Java-Themen 6
O Wie kann ich das Ende eines Threads melden? Allgemeine Java-Themen 7
J Writer und Threads Allgemeine Java-Themen 2
G mehrere Threads starten/stoppen Allgemeine Java-Themen 4
E Verständnisfrage bezüglich Threads Allgemeine Java-Themen 4
K Zeitkritische Threads Allgemeine Java-Themen 14
K Threads - Swing - Synchronisation nötig? Allgemeine Java-Themen 8
S [THREADS] Thread sinnvoll beenden Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben