Explicação detalhada dos threads java e a diferença entre threads e processos
1. Processos e tópicos
Cada processo possui um espaço de memória exclusivo e um aplicativo pode iniciar vários processos ao mesmo tempo. Por exemplo, no navegador do IE, a abertura de um navegador do IE é equivalente a iniciar um processo.
Um thread refere -se a um processo de execução em um processo e um processo pode conter vários threads.
Cada processo precisa do sistema operacional para alocar espaço de memória independente e vários threads no mesmo processo compartilham esse espaço, ou seja, memória compartilhada e outros recursos.
Toda vez que Java.exe é chamado, o sistema operacional iniciará um processo de máquina virtual Java. Quando o processo Java Virtual Machine for iniciado, a máquina virtual Java criará um thread principal, que começará a executar a partir do método principal de entrada do programa.
Toda vez que uma máquina virtual Java inicia um encadeamento, atribui uma pilha de métodos de encadeamento ao thread para armazenar informações relevantes (como variáveis locais etc.), e o thread é executado nesta pilha. Portanto, as variáveis locais nos objetos Java são seguras de encadeamento, mas as variáveis de instância e as variáveis de classe não são armazenadas na pilha, para que não sejam seguras à thread.
Existem três estados do processo: pronto, execução e bloqueio.
2. Método de criação de threads
Método Runnable: (Este método é flexível, recomendado)
public class Thread02 implementa Runnable {public static void main (string [] args) {runnable r = new <strong> thread02 </strong> (); Thread t1 = novo thread (<strong> r </strong>, "t1"); /*** Código fonte do thread* thread public (runnable alvo, nome da string) {init (null, destino, nome, 0); } */ Thread t2 = novo thread (r, "t2"); t1.start (); // Iniciar thread t1, em estado pronto, esperando a CPU T2.Start (); // Iniciar o thread T2, em estado pronto, esperando a CPU T1.run (); // O encadeamento principal chama o método de execução do objeto t1} public void run () {System.out.println ("o nome do thread é" + thread.currentThread (). GetName ()); }}O resultado da operação pode ser:
O nome de Thread é o nome de T1Thread é o nome de MainThread é T2
O caminho da cabeça
classe pública Thread03 estende o thread {public static void main (string [] args) {thread03 t1 = new <strong> thread03 </strong> (); // Escreva como thread t1 = new Thread () Nota: Thread03 é um thread neste momento t1.start (); } public void run () {System.out.println ("O nome do thread é" + thread.currentThread (). getName ()); }}Resultado em execução: o nome do thread é thread-0
Nota: Além dos threads personalizados, também há um thread principal sempre que o programa é executado.
abrangente:
classe pública thread01 {public static void main (string [] args) {thread thread = new Thread (); thread.start (); // o que realmente funciona é executado ()/** e execute no thread* public void run () {if (target! = null) {Target.run (); }} Para que o thread que você criou precisa reescrever o método Run e colocar o conteúdo a ser executado em run (), para que você precise implementar a interface ou a herança e, em seguida, gerar subclasses*// como criar um thread 1 shread) (thread) {thread) thread1 = new Thread () {public void run () {while (the True) {{) {{) para thread1 = thread (). (InterruptEdException e) {e.printStackTrace (); } //Thread.currentThread () obtém o shread system.out.println ("o nome do thread 1 é"+thread.currentThread (). GetName ()); }}}}; // thread1.start (); // não é capaz de iniciar sem escrever o thread // como criar thread 2 runnable método (implementação) é recomendável usar o thread2 = new thread (new runnable () {public void run () {while (true) {try {thread.sLeep (300);} catch (interruedException e) {e.prArtStack.Sleep (300);} Catch (interruedException. "+Thread.currentThread (). GetName ());}}}); // thread2.start (); // Execute thread new Thread (new runnable () {public void run () {System.out.println ("runnable"+thread.currentThread (). getName ());}}) {public void run () {// o método na subclasse é o método do ren. "+Thread.currentThread (). GetName ()); } }.começar(); } /****A execução de multithreading em uma única CPU provavelmente reduzirá a eficiência da execução em vez de melhorar uma pessoa fazendo a mesma coisa em lugares diferentes* /}Obrigado pela leitura, espero que isso possa ajudá -lo. Obrigado pelo seu apoio a este site!