O que acontece quando você chamar um método em um segmento que já está trabalhando?

Zyzyx:

Executando o meu código de teste abaixo parece que chamar um método tópicos enquanto ele ainda está em execução executa o método entre as threads de execução atual. O que eu estou querendo saber é o que é exatamente a acontecer?

Será que o fio pausar o while loop, executar o método, e depois voltar para o loop? Será que fazê-lo no final do código, enquanto ou em qualquer lugar?

Ou será que o método de execução em outro segmento separado? Ou algo completamente diferente?

package test;

public class main {
    public static threed thred = new threed();

    public static void main(String[] args) throws InterruptedException {
        thred.start();
        Thread.sleep(10000);
        while (true) {
            System.out.println("doing it");
            thred.other();
            Thread.sleep(2000);
            thred.x++;
        }
    }
}

e

package test;

public class threed extends Thread {
    public int x;

    public threed() {
        x = 0;
    }

    public void run() {
        while (x < 10) {
            System.out.println(x);          
        }   
    }

    public void other() {
        System.out.println("other " + x);
    }
}
Peter Lawrey:

Todos os métodos chamados estiver usando o segmento atual para todos os objetos. Se você chamar um método em Threadque também chama esse método como qualquer outro no segmento atual.

O único que é ligeiramente confusão é que start()começa outro segmento e chamadas run()para esse novo segmento.

Esta é uma das razões é melhor não estender Thread, mas passar uma Runnablea ele como também muitas vezes os métodos ou não fazer o que parecem ou tiver efeitos secundários que você não espera.

NOTA: Java, muitas vezes tem um objeto de proxy na pilha para o gerenciamento de um dos recursos que na verdade é off pilha (nativo). Por exemplo, dirigir ByteBuffer ou JTable ou soquete ou FileOutputStream. Esses objetos não são o recurso real como o sistema operacional entende-los, mas um objeto Java usa para torná-lo mais fácil de gerenciar / manipular o recurso a partir do código Java.

Acho que você gosta

Origin http://43.154.161.224:23101/article/api/json?id=196064&siteId=1
Recomendado
Clasificación