Multithreading Sincronização em Java

votos
0

Oi Estou executando vários segmentos no meu programa com cada thread bônus contendo uma série de 6 elementos. I adicionou sincronizar no meu método de funcionamento para o fio, mas apenas o primeiro segmento é sincronizado em termos de exibir a matriz ordenada de 1 a 6.

/* My run method for the thread */
public synchronized void run(){
    int from = St7.stt[acnt].getCf();
    int to = St7.stt[acnt].getCt();
    int inc = St7.stt[acnt].getCi();
    threadsRunning++; // We now have more threads 
    this.threadId = threadsRunning;
    active = true;
    try{
        int loop = from;
        while (active && loop <= to){

            System.out.println(text +  Counter:  + St7.stt[acnt].getCounter() + .);
            System.out.println();
            Thread.sleep(sleep);
            loop=loop+inc;
        }
Publicado 24/03/2013 em 00:00
fonte usuário
Em outras línguas...                            


2 respostas

votos
1

Tanto quanto eu entendo que você quer dos fios resulta na mesma ordem em que está despachado, se isso é correto, provavelmente, o Callable Interface poderia ajudá-lo: ele permite que você execute em vários segmentos, mas também você é capaz de obter o retorno de cada enrosque na ordem que você executá-los (confira aqui ).

Respondeu 24/03/2013 em 00:20
fonte usuário

votos
0

Eu não tenho certeza se entendi a pergunta, e os pobres nomenclatura de variáveis não ajuda, mas parece que você é criar N instância de uma classe StudentThread, que todos têm o seu run()método sincronizado.

Isso não vai impedir que vários segmentos para invocar o método de execução em simultâneo, uma vez que eles estão todos sincronizados em um separado objeto. Para ter exclusão mútua, todos os fios deve sincronizar em um único objeto, que deve encapsular o estado compartilhado que deve ser protegido de acesso simultâneo.

Respondeu 24/03/2013 em 00:09
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more