|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Sep 2005
Città: Torino
Messaggi: 606
|
[Java] problemi con i thread
1) Stoppare i thread
Ho già dato un'occhiata qui, ma non mi è mica tanto chiaro... ![]() esistono un'infinità di programmi che permettono la "pausa" durante una computazione molto lunga o su una funzione "bloccante"... se mi trovo in uno di questi casi come faccio a sospendere le operazioni dei thread?? premetto che ho un thread "principale" che gestisce la partenza di altri thread "figli". 2) Ho un metodo per scrivere su file...se 2 thread devono utilizzare quel metodo per uno stesso file come evito problemi???basta dichiarare il metodo synchronized o no?
__________________
"Se proprio dovete piratare un prodotto, preferiamo che sia il nostro piuttosto che quello di qualcun altro." [Jeff Raikes] "Pirating software? Choose Microsoft!" |
![]() |
![]() |
![]() |
#2 | |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Dipende da cosa hai fatto realmente a livello di codice. Cosa prende come parametri questo metodo, e cosa fa sul file? Cioè quali classi e oggetti usi?
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Sep 2005
Città: Torino
Messaggi: 606
|
1) grazie per la dritta...ho dato una letta, appena posso vedo di applicare, se qualcosa non mi torna torno a chiedere consiglio!
![]() 2) il metodo è questo: Codice:
public ?synchronized? void scriviSuFile(File f, String line) throws IOException { boolean append = true; PrintWriter pw = new PrintWriter(new FileWriter(f, append)); pw.println(line); pw.close(); }
__________________
"Se proprio dovete piratare un prodotto, preferiamo che sia il nostro piuttosto che quello di qualcun altro." [Jeff Raikes] "Pirating software? Choose Microsoft!" |
![]() |
![]() |
![]() |
#4 | |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Supponiamo che il tuo metodo sia nella classe ScritturaFile (tanto per dare un nome) e che tu abbia messo il synchronized al metodo. Se 2 o più thread invocano scriviSuFile() sulla stessa istanza di ScritturaFile, allora sei certo che solamente 1 thread per volta eseguirà il metodo. Nulla però vieterebbe di avere più istanze della tua classe e invocare il metodo da più thread ma sulle diverse istanze. In questo caso non ci sarebbe alcuna sincronizzazione!! Insomma, se la tua necessità è quella di far sì che l'accesso al file sia esclusivo, allora è un problema di lock del file e non di sincronizzazione a livello di metodi.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
![]() |
![]() |
![]() |
#5 | |
Senior Member
Iscritto dal: Sep 2005
Città: Torino
Messaggi: 606
|
Quote:
Ora però mi chiedo, e se il metodo fosse di classe e non di istanza?
__________________
"Se proprio dovete piratare un prodotto, preferiamo che sia il nostro piuttosto che quello di qualcun altro." [Jeff Raikes] "Pirating software? Choose Microsoft!" |
|
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Se il metodo è "di classe" ed ha il synchronized, allora il lock è sull'oggetto Class associato alla classe.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
![]() |
![]() |
![]() |
#7 | |
Senior Member
Iscritto dal: Sep 2005
Città: Torino
Messaggi: 606
|
Quote:
![]()
__________________
"Se proprio dovete piratare un prodotto, preferiamo che sia il nostro piuttosto che quello di qualcun altro." [Jeff Raikes] "Pirating software? Choose Microsoft!" |
|
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
java.lang.Class .... la classe che rappresenta .. una classe.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 16:15.