Newsgroup: it.comp.java
Titolo: un paio di domande da niubbino

mi scuso in anticipo per le domande da lamerone, ma per quanto abbia cercato
da solo non sono riuscito a trovare una soluzione ai seguenti quesiti:
-perchè quando in borland jbuilder 8 faccio alt+123 invece della parentesi
graffa { mi viene scritta una "i"? esiste un modo di ovviare?
-che differenza c'è fra wait(int) e sleep(int)? devo introdurre un ritardo
in un ciclo while in attesa che si verifichi una data condizione, e ho
notato che se uso wait succedono cose strane, quando il while è attivo
l'utilizzo della cpu va al 100% freezando tutto... con sleep invece non
succede, e sembra tutto regolare.
il problema è che in un componente che ho fatto, che estende jcomponent, il
metodo sleep pare non esserci, e quindi sono costretto ad usare wait che
incasina tutto :(
spero di non aver fatto domande troppo sceme, portate pazienza per favore, e
datemi una mano che è per la scuola ^_^
grazie in anticipo a tutti
s.t.

ne approfitto per fare anche un'altra domanda. perchč quando eseguo questo
pezzo di codice
  void jButton4_actionPerformed(ActionEvent e) {
    if ( (static_stuff.run_processor) || (static_stuff.run_generator)) {
      static_stuff.run_processor = false;
      static_stuff.run_generator = false;
    }
    else {
       static_stuff.run_processor = true;
       static_stuff.run_generator = true;
     }
  }
si esegue sia la parte dell'if che quella dell'else? sembra che il
compilatore mi sostituisca l'else con un if con condizioni complementari a
quello messo da me, e quindi vada ad eseguire anche quel pezzo... bhň... non
ci capisco niente :(
ciao
s.t.

uffa, se metto static_stuff.run_processor=true ecc si risolve... almeno
questa è a posto, ma che due @@ ^_^
ciao
s.t.

avevo questo problema su w2k e xp, mentre su versioni di windows precedenti
funzionava benissimo.
parlo dei textcomponent di java , e siccome non conosco jbuilder potrei
supporre che è fatto in java.
ho risolto i miei problemi scaricando il j2sdk1.4.1_02 , che risolve questo
bug
fra l'altro tutti i caratteri > alt 127 venivano sballati.
provare per credere facendo un confronto fra caratteri digitati  su notepap
e su una qualunque jtextarea
"s.t" <a@b.c> ha scritto nel messaggio
news:bb044p$ido$1...@newsreader.mailgate.org...


"s.t" <a@b.c> ha scritto nel messaggio
news:bb044p$ido$1...@newsreader.mailgate.org...

Non ti so spiegare perche' succeda, pero' ti posso dire che le graffe si
fanno anche con shift-ctrl-alt + <tasti quadre> oppure anche shift-altGr +
<tasti quadre>.
Non so nemmeno spiegarti la differenza tra il wait e lo sleep, pero'
quest'ultimo lo puoi chiamare da ovunque usando Thread.sleep(num);
Ciao!
--
Huan

se metto static_stuff.run_processor=true ecc si risolve...
Se lo metti dove? Se lo metti nella condizione non va bene perché prima 
assegna true a static_stuff.run_processor e poi usa il valore per valutare 
la condizione ma ovviamente a questo punto il valore è true. Cioè se 
intendi: 
if((static_stuff.run_processor=true) || altro) questo equivale a:
if(true || altro) che equivale a:
if(true)
e dunque viene SEMPRE eseguito il ramo dell'if.
Francamente mi sembra impossibile che venissero eseguiti tutti e due (ramo 
if e else), forse è meglio che controlli ;)
Ciao
Matteo

caro matteo, sei un po' un drago ^_^
ho capito (spero), quindi grazie a te e a tutti gli altri che si sono
gentilmente prodigati per aiutarmi.
ne approfitto per fare un'altra domanda al ng, nella speranza di esser
ancora cosě fortunato:
i thread di cui parlavo sopra devono accedere ad un vector su cui devono
eseguire alcune operazioni, che devono avvenire in mututa esclusione, e
quindi va bene il discorso synchronized che č stato fatto.
il problema č un altro: qual č il modo piů corretto per dichiarare questo
oggetto vector in modo tale che classi diverse (i thread) ce l'abbiano nel
loro scope?
io al momento ho creato una classe che contiene alcune variabili statiche
(tra cui il vector in questione), ma credo che anche questo sia un uso poco
ortodosso di java.
d'altra parte l'altra idea che mi č venuta sarebbe di passarlo come
parametro nella chiamata di un metodo, ma mi sembra un po' scomodo.
ancora una volta grazie in anticipo
s.t.

 loro scope?
Questo è un problema grosso e per quanto ne so io non ha una soluzione in 
generale. In effetti dovresti averlo già risolto a monte, cioè nella fase 
di progettazione, ma se vai ancora a scuola probabilmente appena ti viene 
un'idea prendi ed inizi a scrivere il codice ;)
Le soluzioni possibili sono moltissime (tu ne hai gia' trovate due), quelle 
che mantengono il software di una certa qualita sono meno, quelle eleganti 
sono poche ;))
In genere dipende dal particolare problema.
Il Vector appartiene da un punto di vista logico a qualche classe? Non sarà 
proprio appeso nel nulla no? Altro possibile criterio: se i Thread 
implementano delle funzionalità uno si potrebbe aspettare (sempre da un 
punto di vista teorico) che questa possa essere applicata su vari input 
dunque passargli il Vector come parametro, ad esempio nel costruttre, mi 
sembra un'idea migliore di un riferimento ad una particolare variabile 
statica. 
Provo a spiegarmi meglio.
Faccio un Thread che ordina un vettore secondo il metodo compareTo dei suoi 
elementi.
A me serve per ordinare un solo, particolare, vettore. Ho due possibilità: 
1) rendere la classe indipendente dal particolare vettore passandoglielo 
nel costruttore. Anche se in questo programma non ne ho bisogno potrei 
avere delle istanze di questa classe che ordinano vettori diversi, quelli 
che gli passo nel costruttore. Magari un giorno ti ritrovi a dover ordinare 
un vettore ed hai una classe già bella e fatta.
2) legare la classe al particolare vettore. Varie istanze della stessa 
classe ordinerebbero sempre lo stesso vettore perché non c'è modo di dirgli 
di cambiare. Ma in questo momento a te non importa perché tu devi ordinare 
un vettore solo.
La prima soluzione aumenta la modularità, la riusabilità, la possibilità di 
trovare errori(potresti fare un programma che chiama varie instanze del 
Thread su vari vettori e vedere come si comporta), l'estendibilità, la 
manutenibilità... devo continuare? ;)
La seconda non fa niente di tutto ciò, "però funziona".
A te la scelta...
Ciao
Matteo  

 Forse era questo il discorso che dicevi?
mumble.... č giŕ sincronizzato... non capisco, perchč in pratica io ho 2
thread, uno che deve aggiungere elemtni al vector e l'altro cancellarli
secondo un certo criterio... naturalmente se ad uno dico di inserire un
elemento al posto 50 e con l'altro gli faccio cancellare elementi fino a
lasciarne solo 3 penso che mi dia errore... il posto 50 non esiste, al
massimo gli posso dire 3, giusto? ma poi che cos'č un iterator?
cmq grazie per le risposte e scusa il ritardo
ciao
s.t.

 ma poi che cos'è un iterator?
Ti consiglio di guardare l'API.
Ciao
Matteo