Jump to content
tjt

Fire de executie.

Recommended Posts

Posted

Am inceput sa ma joc cu firele de executie prin JAVA si am intampinat urmatoarea problema :

Am 2 fire de executie (consumator/producator) .

In cadrul producatorului pentru fiecare apel al Thread-ului trebuie sa fac o citire de la tastatura . Aici e problema. In momentul in care fac citirea de la tastatura imi iese din Thread-ul producator si se duce direct in consumator pentru ca intervine Thread-ul pentru Input.

Cum as putea ca thread-ul Producator si thread-ul din interiorul lui care apare atunci cand fac Input de la tastatura sa lucreze ca un singur Thread ?

Metodele put si get sunt sincronizate.


//fir de executie pentru producator
....
public void run() {
while(true){
setarePachet();
/* Aici e problema !!! Cand apeleaza metoda asta ,imi iese din thread-ul Producator pentru ca se face citirea de la tastatura */
pipe.put(mesaj);
pipe.notificare(true);

}
}
....


//Fir de executie pentru Consumator
....
public void run() {
while(true){
mesaj=pipe.get();
pipe.notificare(false);
System.out.println("Consumator :<--- "+mesaj);
}
}
....

Posted (edited)

Cum zicea si M2G, ai dat prea putine informatii. Cand lucrezi cu threaduri si functii care se bazeaza pe threaduri ( gen block on wait) totul e bine si frumos, caci threadul principal va fi blocat in asteptare la sfarsirea threadului curent, child (cel care are ca thread parent pe cel blocat, principal). Daca ai fi observat pe langa `synchronize` se poate utiliza `wait()`, cu ajutorul careia se poate implementa acest comportament.

La baza un thread nu are nimic de a face cu un alt thread, daca ele sunt scrise in asa fel incat sa nu se opreasca (gen bucla while/for/recursive). Ele vor 'functiona in paralel', pana cand o eroare se va produce in threadul respectiv si se va opri, ori a fost fortat sa se opreasca. Chiar daca un thread se blocheaza celalalt poate continua sa ruleze, atat timp cat programul in sine nu blocheaza toate threadurile pe motiv de eroare mai grava.

Noi nu stim cum functioneaza pipe urile tale, si ce comportament vrei ca programul sa abordeze.

Edited by noVaLue
Posted

Da aveti dreptate ar fi trebuit sa pun mai mult cod,dar e vorba despre un proiect privat care nu ar trebui sa aiba parti din cod sursa publice.

Oricum dupa lungi cautari am inteles exact cum se manifesta thread-urile si am reusit sa rezolv problema cu ajutorului ThreadGroup.

Un moderator poate sa inchida topicul. :)

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...