Multithread NullPointerException verhindern

virtualAudio

Aktives Mitglied
Hi Leute,

ich hab eine Prinzipfrage, kein konkretes Beispiel.

Was passiert denn wenn ich sowas hab wie

Java:
if(lockObject!=null){
  // ....hier....
  synchronized(lockObject){
  }
}

das lockObject bei "...hier..." NULL wird?

Müsste ich um sowas zu verhindern so einen Synchronized block in einen try-Block reinschreiben und eine Nullpointerexception abfangen?

Also prinzipiell gehen ja zwei Sachen auf jeden Fall. Entweder ich hab meine Threads und was sie wann tun gut durchgedacht und kann sowas auf anderem Wege verhindern, zB indem ich die Stelle an der das lockObj. NULL werden kann auf keinen Fall aufrufe solange ein Thread noch an so einen synchronized Block wie hier stoßen kann, oder ich kann eben die Exception abfangen.

Ich schreibe hier weil ich mir ersteres bei komplizierten Programmen nicht so richtig vorstellen kann (da fehlt mir die multithread Erfahrung :) und weil mir zweiteres nicht wie der beste Weg vorkommt).

Hat dazu jemand eine Idee/Meinung bzw. einen Standardweg der üblich ist um sowas zu verhindern und der von meinen beiden ideen abweicht?

lg andi
 
G

Gast2

Gast
Java:
public class Test
{
    private Object myLockObject = new Object()

    // ... bla ...

    public void foo()
    {
        synchronized(myLockObject)
        {
        }
    }
}
 

Andi_CH

Top Contributor
NEIN! Das ist Grundfalsch! -> Siehe weiter unten.

Gibt es in Java wirklich keine atomaren Instruktionen? (Testen und setzen in einem Maschinenzyklus)
Falls es das wirklich nicht gibt, wird ein Java Programm niemals 100% sicher funktionieren.

Das mit dem anderen Objekt verwenden war ja wohl nicht ernst zu nehmen, oder?

Es geht um einen kritischen Bereich der von 2 Threads durchlaufen wird - willst du jedem Thread ein eigenes Lock-Objekt geben ???:L Denke mal darüber nach ob das funktionieren kann (Nein, kann es nicht) es MUSS ein gemeinsames Objekt sein!

Thread1 kommt in den kritischen Bereich, prüft das Objekt und lockt es
Thread2 kommt in den kritischen Bereich und prüft sein eigenes Objekt -> Schei......

Thread2 kommt in den kritischen Bereich und prüft das gmeinsame Objekt -> ok -> er muss warten.

Problem:
Thread1 kommt in den kritischen Bereich, prüft das Objekt und wird unterbrochen
Thread2 kommt in den kritischen Bereich, prüft das Objekt, lockt es, bearbeitet den kritischen Bereich
und wird unterbrochen.
Thread1 wird aktiviert-lockt das Objekt und bearbeitet den kritischen Bereich -> PROBLEM!

Ergo: So kann es unmöglich funktionieren - es muss eine unteilbare Anweisung geben - prüfen und locken in einem, sonst ........
 
Zuletzt bearbeitet:

FArt

Top Contributor
NEIN! Das ist Grundfalsch!

Was genau?

Gibt es in Java wirklich keine atomaren Instruktionen? (Testen und setzen in einem Maschinenzyklus)
The Java Community Process(SM) Program - JSRs: Java Specification Requests - detail JSR# 133

Das mit dem anderen Objekt verwenden war ja wohl nicht ernst zu nehmen, oder?

Thread1 kommt in den kritischen Bereich, prüft das Objekt und lockt es
Thread2 kommt in den kritischen Bereich und prüft sein eigenes Objekt -> Schei......
Doch, natürlich. Das heißt nicht, dass man für jeden Thread ein anderes Objekt verwendet sondern einfach für die kritischen Sektionen, die über den gleichen Monitor gehen. Kommen diese Sektionen in nur einer Klasse vor, kann das ein Member der Klasse sein.
Du schmeißt hier Thread und Objekt in einen Topf.
 

Andi_CH

Top Contributor
Logisch...das wird wohl der richtigste Weg sein wenn man glaubt, dass das passieren könnte :)

Danke!

Diese Überlegung ist falsch - dann funktioniert das Locking nicht - es muss immer ein gemeinsames Objekt sein, dass für das Locking verantwortlich ist.


Und mit "Objekt" habe ich das Lock-Objekt gemeint --- das muss gemeinsam sein und somit bleibt das Risiko, dass einer der Thrads die Referenz auf dieses auf null setzt.
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
schemil053 Multithread - Input verrutscht während etwas ausgegeben wird Java Basics - Anfänger-Themen 6
K Threads Multithread in JavaFx Java Basics - Anfänger-Themen 11
B Multithread mode funktioiernt nicht wie gewünscht Java Basics - Anfänger-Themen 4
D Multithread Sockets"Address already in use"Error Java Basics - Anfänger-Themen 11
G Multithread /DatagramPacket Problem Java Basics - Anfänger-Themen 3
M NullPointerException: Cannot read the array length because "this.Kinder" is null Java Basics - Anfänger-Themen 1
H Liste Knoten NullPointerException Java Basics - Anfänger-Themen 7
C Compiler-Fehler NullPointerException Java Basics - Anfänger-Themen 10
LePetitChat1 Arrays - NullPointerException? Java Basics - Anfänger-Themen 14
berserkerdq2 Nullpointerexception, obwohl ich Array initialisiere? Java Basics - Anfänger-Themen 1
U Warum gibt das eine Nullpointerexception? (Switch) Java Basics - Anfänger-Themen 6
missy72 Klassen Objekt Array NullPointerException Java Basics - Anfänger-Themen 3
Jose05 Nullpointerexception Java Basics - Anfänger-Themen 7
emx-zee Erste Schritte NullPointerException, Array mit zufälligen Zahlen füllen Java Basics - Anfänger-Themen 2
Jose05 Nullpointerexception bei Umwandlung von String zu int Java Basics - Anfänger-Themen 2
H Java NullPointerException Java Basics - Anfänger-Themen 4
YaU Vererbung erstellt NullPointerException? Java Basics - Anfänger-Themen 4
D Hilfe beim Erzeugen eines Arrays NullPointerException wird ausgelöst Java Basics - Anfänger-Themen 11
L Threads Komischer NullPointerException Java Basics - Anfänger-Themen 2
H Fehler: NullPointerException und ich weiß net warum Java Basics - Anfänger-Themen 4
F Fehlermeldung java.lang.NullPointerException Java Basics - Anfänger-Themen 4
Avalon NullPointerException beim Mocken Java Basics - Anfänger-Themen 6
D NullPointerException in foreach loop Java Basics - Anfänger-Themen 1
D java.lang.NullPointerException Java Basics - Anfänger-Themen 19
T Bufferedwriter code Nullpointerexception Java Basics - Anfänger-Themen 4
D NullPointerException im Array Java Basics - Anfänger-Themen 4
X java.lang.NullPointerException fehler ? Java Basics - Anfänger-Themen 1
B java.lang.NullPointerException bei javafx Java Basics - Anfänger-Themen 10
J NullPointerException beim Klonnen eines Arayys und beim aufrufen einer Methode Java Basics - Anfänger-Themen 2
V NullPointerException Java Basics - Anfänger-Themen 2
S NullPointerException während ResultSet Java Basics - Anfänger-Themen 7
V NullPointerException, wenn Key und Value null sind Java Basics - Anfänger-Themen 2
scratchy1 NullPointerException Java Basics - Anfänger-Themen 19
U Was löst meine NullPointerException aus? (Vererbung) Java Basics - Anfänger-Themen 12
F Wie kann ich diese NullPointerException umgehen?! Java Basics - Anfänger-Themen 41
dapzoo Compiler-Fehler Beim Werte verteilen in Objektarray NullPointerException Java Basics - Anfänger-Themen 4
W Optional<T> - NullPointerException Java Basics - Anfänger-Themen 37
Jascha NullPointerException vs NumberFormatException Java Basics - Anfänger-Themen 5
L Variablen NullPointerException bei Dateigröße (Nr.1) Java Basics - Anfänger-Themen 4
M Compiler-Fehler NullPointerException Java Basics - Anfänger-Themen 13
D NullPointerException umgehen Java Basics - Anfänger-Themen 17
Z Objekt Array führt zum NullPointerException Java Basics - Anfänger-Themen 2
W NullPointerException obwohl nicht null? Java Basics - Anfänger-Themen 3
W ArrayList NullPointerException Java Basics - Anfänger-Themen 4
A NullPointerException Java Basics - Anfänger-Themen 6
S NullPointerException Java Basics - Anfänger-Themen 4
T OOP Wörterbuch NullPointerException Java Basics - Anfänger-Themen 4
R Exception in thread "main" java.lang.NullPointerException Java Basics - Anfänger-Themen 10
O NullPointerException Java Basics - Anfänger-Themen 2
M Interpreter-Fehler Feld NullPointerException Java Basics - Anfänger-Themen 4
L Variablen Unerklärliche NullPointerException Java Basics - Anfänger-Themen 2
E Compiler-Fehler nullPointerException in verschachteltem Modell Java Basics - Anfänger-Themen 6
DaCrazyJavaExpert Threads NullPointerException Java Basics - Anfänger-Themen 8
DaCrazyJavaExpert Compiler-Fehler Variable nicht mit null initialisiert, trotzdem: NullPointerException Java Basics - Anfänger-Themen 28
kodela NullPointerException Java Basics - Anfänger-Themen 12
R Taschenrechner NullPointerException Java Basics - Anfänger-Themen 1
H java.lang.NullPointerException Java Basics - Anfänger-Themen 4
H NullPointerException obwohl Objekt angelegt wurde Java Basics - Anfänger-Themen 1
A Threads Reentrantlock | NullpointerException möglicher Deadlock? Java Basics - Anfänger-Themen 0
K Compiler-Fehler NullPointerException lösen Java Basics - Anfänger-Themen 16
G java.lang.NullPointerException Java Basics - Anfänger-Themen 3
P Compiler-Fehler NullPointerException Java Basics - Anfänger-Themen 1
E Compiler-Fehler java.lang.NullPointerException Java Basics - Anfänger-Themen 2
S Methoden Methode funktioniert nicht | NullPointerException Java Basics - Anfänger-Themen 6
F NullpointerException bei zweidimensionalem Array Java Basics - Anfänger-Themen 2
Z OOP - Array ständig NullPointerException Java Basics - Anfänger-Themen 4
J Verstehe die NullPointerException nicht Java Basics - Anfänger-Themen 1
T Nullpointerexception und es wird nichts angezeigt Java Basics - Anfänger-Themen 15
H NullPointerException, aber wieso? Java Basics - Anfänger-Themen 5
B ProcessMessage NullPointerException Java Basics - Anfänger-Themen 11
shiroX Compiler-Fehler NullPointerException Java Basics - Anfänger-Themen 9
MrSnake ItemListener mit NullPointerException Java Basics - Anfänger-Themen 3
J java.lang.NullPointerException in meiner JavaFXControllerKlasse Java Basics - Anfänger-Themen 26
M NullPointerException Java Basics - Anfänger-Themen 8
B Vererbung NullPointerException Java Basics - Anfänger-Themen 38
D Communications link failure | java.lang.NullPointerException Java Basics - Anfänger-Themen 3
G NullPointerException Java Basics - Anfänger-Themen 1
J NullpointerException Java Basics - Anfänger-Themen 1
M Interpreter-Fehler Nullpointerexception trotz Ordentlicher Initialisierung Java Basics - Anfänger-Themen 4
F java.lang.NullPointerException, kann aber nicht sein! Java Basics - Anfänger-Themen 4
M String-Vergleich und NullPointerException Java Basics - Anfänger-Themen 4
D Java Fehler: NullPointerException Java Basics - Anfänger-Themen 1
M Vergleich zweier Array Stellen mit equals/NullpointerException Java Basics - Anfänger-Themen 9
X Problem mit NullPointerException Java Basics - Anfänger-Themen 2
K NullPointerException in der Hashtable Java Basics - Anfänger-Themen 4
S Interpreter-Fehler Hilfestellung bei einer NullPointerException Java Basics - Anfänger-Themen 1
S GraphNode --- Dijkstra Algorithmus : NullPointerException Java Basics - Anfänger-Themen 1
L NullPointerException Java Basics - Anfänger-Themen 11
M Nullpointerexception??? Java Basics - Anfänger-Themen 2
W NullPointerException bei DefaultListModel Java Basics - Anfänger-Themen 5
N NullPointerException bei Konsolenausgabe Java Basics - Anfänger-Themen 5
J Klasse in Klasse; NullPointerException Java Basics - Anfänger-Themen 8
R NullPointerException wegen JPanel oder doch nicht ? Java Basics - Anfänger-Themen 7
Q NullPointerException Java Basics - Anfänger-Themen 5
H NullPointerException Java Basics - Anfänger-Themen 5
T Threads MultiThreading NullPointerException Java Basics - Anfänger-Themen 7
K NullPointerException wird geworfen, bitte um Hilfe! Java Basics - Anfänger-Themen 7
O Objekt weitergeben Meth Class NullPointerException Java Basics - Anfänger-Themen 2
J Char-Array - NullPointerException Java Basics - Anfänger-Themen 3
M Compiler-Fehler Java suckt - java.lang.NullPointerException Java Basics - Anfänger-Themen 12

Ähnliche Java Themen

Neue Themen


Oben