Hi, die Methode selectedKeys() von der Klasse Selector ist ja nicht Thread-Sicher. Wie könnte man diese synchronisieren um dies zu erreichen ?
Meine Idee war folgende:
Ist das so ok ? Liefert selectedKeys() eine Refernz auf ein Object das intern von Selector verarbeitet wird ? Oder erstellt es ein neues Object jedes mal ?
Ich bin noch nicht ganz mit der Speicherverwaltung von Java verrtaut,... bei C++ war das alles etwas durchschaubarer...
Achja noch eine Frage zu "synchronized" Was genau synchronisiert man da ? Die Referenz oder das Object im Speicher ?
Also ich meine zb. folgendes: Man erstellt 2 Referenzen auf einen Speicherplatz. So nun synchronisiert man eine davon und ändert iwas mit einer MEthode von dem Object. Könnte man nun in einem anderem Thread mit der 2ten Referenz ohne Problem auf das Object zugreifen ? Oder ist der Speicherplatz für weiteren Zugriff gesperrt ?
Grußß Chris
Meine Idee war folgende:
Code:
Iterator<SelectionKey> selectedKeys;
synchronized(socketSelector)
{
selectedKeys = socketSelector.selectedKeys().iterator();
}
synchronized(selectedKeys)
{
while(selectedKeys.hasNext())
{
//....
Ist das so ok ? Liefert selectedKeys() eine Refernz auf ein Object das intern von Selector verarbeitet wird ? Oder erstellt es ein neues Object jedes mal ?
Ich bin noch nicht ganz mit der Speicherverwaltung von Java verrtaut,... bei C++ war das alles etwas durchschaubarer...
Achja noch eine Frage zu "synchronized" Was genau synchronisiert man da ? Die Referenz oder das Object im Speicher ?
Also ich meine zb. folgendes: Man erstellt 2 Referenzen auf einen Speicherplatz. So nun synchronisiert man eine davon und ändert iwas mit einer MEthode von dem Object. Könnte man nun in einem anderem Thread mit der 2ten Referenz ohne Problem auf das Object zugreifen ? Oder ist der Speicherplatz für weiteren Zugriff gesperrt ?
Grußß Chris