Mi chiedo se sia possibile in java avere una classe che implementa Runnable e se un oggetto della classe va in attesa() (quindi il thread smette di funzionare finché non riceve un segnale), un altro oggetto della stessa classe può notificarlo per continuare a funzionare?Come uso wait/notifyAll
Idealmente quello che voglio essere in grado di fare è:
public class ThreadClass implements Runnable{
public void run(){
//.. Does some arbitrary work
if(aCondition){ //have it wait until something signals it to contine exection.
this.wait();
}
//Continues to do more work.
//finished whatever it needed to do. Signal all other threads of this object type to continue their work.
this.notifyAll();
}
}
Questo è possibile e se sì, come dovrei andare a farlo? Sto cercando di farlo in modo che l'oggetto stesso possa gestire se stesso e tutti gli altri oggetti dello stesso tipo. In modo che nessuno che utilizza questa classe deve preoccuparsi di gestirlo.
Qualsiasi aiuto su come rendere il manager? attualmente ho solo una classe che crea il mio oggetto thread, ma non tutti i thread saranno messi in pausa- mi aspetto che i thread da 1/10 debbano fermarsi finché una risorsa non viene rilasciata da un altro thread. – user597608
@ user597608: avremmo bisogno di sapere più informazioni - non sappiamo davvero nulla di ciò che questo sta tentando di fare. Se puoi rendere responsabile il tuo manager per la creazione di ogni istanza, allora può passare un riferimento a se stesso a ciascuna delle istanze, in modo che possano richiamare quando devono segnalare qualcosa alle altre istanze gestite dallo stesso manager ... che ti aiuti? –
Sto facendo un server che aspetta le chiamate UDP. Ottiene un messaggio e crea un nuovo thread che analizza il messaggio e quindi lo inserisce in un database SQLite. Sto riscontrando il problema che i blocchi di database sono dovuti al fatto che un database SQLite è un file. Ho provato un pool di connessioni (BoneCP), ma ha degradato le prestazioni del mio codice di un 1/10. Al momento il mio server è in grado di gestire 10 msg/secondo, ma uno superiore a quello e craps fuori. – user597608