Jestem nowy w tym równoległym programowaniu w Javie i wymyśliłem następujące scenariusze, w których pojawia się dezorientacja, której należy użyć, kiedy.
Scenariusz 1: W poniższym kodzie starałem się uruchomić wątki wywołując .start() od klasy GPSService który jest Runnable realizacja.Jaka jest różnica między wykonywaniem ExecutorService i thread.run w uruchomionych wątkach jednocześnie w Javie?
int clientNumber = 0;
ServerSocket listener = new ServerSocket(port);
while (true) {
new GPSService(listener.accept(), clientNumber++, serverUrl).start();
}
Scenariusz 2: W poniższym kodzie starałem się uruchomić wątki za pomocą klasy ExecutorService jak pokazano
int clientNumber = 0;
ServerSocket listener = new ServerSocket(port);
while(true) {
ExecutorService executor = Executors.newSingleThreadExecutor();
executor.execute(new GPSService(listener.accept(), client++, serverUrl));
executor.shutdown();
while (!executor.awaitTermination(1, TimeUnit.SECONDS)) {
// Threads are still running
System.out.println("Thread is still running");
}
// All threads are completed
System.out.println("\nThread completed it's execution and terminated successfully\n");
}
Moje pytania są
Która jest najlepsza praktyka, aby wywołać wątek w współbieżne programowanie?
Jaki będzie wynik (kłopoty), na które napewno skorzystam, gdy użyję pierwszego lub drugiego?
Uwaga: Miałem do czynienia z problemem z pierwszym scenariuszem, w którym program jest zawieszany po kilku dniach. Czy ta kwestia jest związana/oczekiwana, gdy używam pierwszej metody?
Każdy dobry jako odpowiedź/zostaną docenione :) Dziękuję
możliwe duplikat [puli wątków vs tarła wątku] (http://stackoverflow.com/questions/2049948/thread-pool-vs-thread (odradza się) –
@NarendraPathai Jestem bardziej konkretny na moje pytanie, jeśli tak, jak możesz oznaczyć je jako duplikat ??? –
@NarendraPathai Wspomniałem właśnie o tym, żeby się dowiedzieć, czy FirstScenario ma możliwość wywołania takich problemów. Dla twojego zrozumienia, nie poprosiłem o rozwiązanie tego wiszącego problemu. I dziękuję za referencję –