Você está aqui: Java ::: Dicas & Truques ::: Threads

Entenda o ciclo de vida de uma thread

Quantidade de visualizações: 15195 vezes
As diversas threads que criamos em nossos programas Java podem estar, a qualquer momento, em algum dos estados de threads que abordo nesta dica. Eles são: pronta, executando, bloqueada e finalizada.

Vamos detalhar cada um destes estados:

Pronta - Quando criamos uma nova thread e chamamos seu método start() ela entra no estado pronta, ou seja, seu método run() pode ser executado a qualquer momento. É importante observar que chamar start() não faz com que a thread seja executada imediatamente. O que este método faz é deixá-la pronta para execução. Vai depender do gerenciador de threads o momento no qual o método run() da thread recém-criada será executado.

Executando - Quando o método run() de uma thread é finalmente chamado ela entra no estado "executando". Uma thread em execução pode voltar ao estado "pronta" se o seu tempo de CPU expirar ou seu método yield() for chamado. Lembre-se de que chamar Thread.yield() na thread atual faz com que ela gentilmente ceda seu tempo restante de CPU para que as demais threads sejam executadas.

Bloqueada - Uma thread pode entrar no estado "bloqueada", ou seja, se tornar inativa, por várias razões. Ela, ou quaisquer outras threads, pode ter chamado os métodos join(), sleep(), wait() or lock(). Uma thread pode também estar bloqueada aguardando alguma operação de entrada/saída (I/O) ser finalizada. Quando a situação que colocou a thread como bloqueada for revertida ou seu tempo de sleep expirar, ela será reativada e entrará no estado "pronta". Novamente caberá ao gerenciador de threads colocá-la no estado "executando".

Finalizada - Quando todas as instruções contidas no método run() da thread forem concluídas, a thread terá terminado sua tarefa e será finalizada. Uma thread finalizada está "morta". Não há como chamar seu método start() novamente sem criarmos uma nova instância da mesma.

Note que o método run() de uma thread pode ser finalizado em resposta a uma condição de erro ou exceção. Esta situação também provoca a "morte" de um thread.

Link para compartilhar na Internet ou com seus amigos:

Java ::: Classes e Componentes ::: JTextArea

Java Swing - Como obter o texto selecionado em um controle JTextArea do Java Swing

Quantidade de visualizações: 8824 vezes
Em algumas situações nós precisamos obter o texto selecionado pelo usuário em um componente JTextArea de nossas aplicações Java Swing. Isso pode ser feito com uma chamada ao seu método getSelectedText().

Veja um trecho de código no qual obtemos o texto selecionado em um JTextArea chamado textArea:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

textArea = new JTextArea(10, 20);     
String selecionado = textArea.getSelectedText();



Java ::: Desafios e Lista de Exercícios Resolvidos ::: Métodos, Procedimentos e Funções

Exercício Resolvido de Java - Como converter minutos em segundos em Java usando uma função

Quantidade de visualizações: 756 vezes
Pergunta/Tarefa:

Escreva um programa Java para converter minutos em segundos. Você deverá criar uma função converter() que receberá, como argumento, um número inteiro representando os minutos e retornará, também como um inteiro, os segundos correspondentes. Os minutos deverão ser informados pelo usuário.

Sua saída deverá ser parecida com:

Informe os minutos: 15
A quantidade de segundos é: 900
Resposta/Solução:

Veja a resolução comentada deste exercício em Java:

Este código completo faz parte do nosso E-Book 350 Exercícios Resolvidos de Java - PDF com 500 páginas.
Domine lógica de programação e a linguagem Java com o nosso E-Book 350 Exercícios Exercícios de Java, para você estudar onde e quando quiser.

Este e-book contém exercícios resolvidos abrangendo os tópicos: Java básico, matemática e estatística, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book



Java ::: Dicas & Truques ::: Geometria, Trigonometria e Figuras Geométricas

Como calcular o coeficiente angular de uma reta em Java dados dois pontos no plano cartesiano

Quantidade de visualizações: 1606 vezes
O Coeficiente Angular de uma reta é a variação, na vertical, ou seja, no eixo y, pela variação horizontal, no eixo x. Sim, isso mesmo. O coeficiente angular de uma reta tem tudo a ver com a derivada, que nada mais é que a taxa de variação de y em relação a x.

Vamos começar analisando o seguinte gráfico, no qual temos dois pontos distintos no plano cartesiano:



Veja que o segmento de reta AB passa pelos pontos A (x=3, y=6) e B (x=9, y=10). Dessa forma, a fórmula para obtenção do coeficiente angular m dessa reta é:

\[\ \text{m} = \frac{y_2 - y_1}{x_2 - x_1} = \frac{\Delta y}{\Delta x} = tg \theta \]

Note que __$\Delta y__$ e __$\Delta x__$ são as variações dos valores no eixo das abscissas e no eixo das ordenadas. No triângulo retângulo que desenhei acima, a variação __$\Delta y__$ se refere ao comprimento do cateto oposto e a variação __$\Delta y__$ se refere ao comprimento do cateto adjascente.

Veja agora o trecho de código na linguagem Java que solicita as coordenadas x e y dos dois pontos, efetua o cálculo e mostra o coeficiente angular m da reta que passa pelos dois pontos:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

package arquivodecodigos;
 
import java.util.Scanner;

public class Estudos{
  public static void main(String args[]){
    // para ler a entrada do usuário
    Scanner entrada = new Scanner(System.in);
    // coordenadas dos dois pontos
    double x1, y1, x2, y2;
    // guarda o coeficiente angular
    double m; 
       
    // x e y do primeiro ponto
    System.out.print("Coordenada x do primeiro ponto: ");
    x1 = Double.parseDouble(entrada.nextLine());
    System.out.print("Coordenada y do primeiro ponto: ");
    y1 = Double.parseDouble(entrada.nextLine());
    
    // x e y do segundo ponto
    System.out.print("Coordenada x do segundo ponto: ");
    x2 = Double.parseDouble(entrada.nextLine());
    System.out.print("Coordenada y do segundo ponto: ");
    y2 = Double.parseDouble(entrada.nextLine());   
     
    // vamos calcular o coeficiente angular
    m = (y2 - y1) / (x2 - x1);
     
    // mostramos o resultado
    System.out.println("O coeficiente angular é: " + m);
    
    System.out.println("\n\n");
    System.exit(0);
  }
} 

Ao executar este código Java nós teremos o seguinte resultado:

Coordenada x do primeiro ponto: 3
Coordenada y do primeiro ponto: 6
Coordenada x do segundo ponto: 9
Coordenada y do segundo ponto: 10
O coeficiente angular é: 0.6666666666666666

Veja agora como podemos calcular o coeficiente angular da reta que passa pelos dois pontos usando o Teorema de Pitágoras. Note que agora nós estamos tirando proveito da tangente do ângulo Theta (__$\theta__$), também chamado de ângulo Alfa ou Alpha (__$\alpha__$):

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

package arquivodecodigos;
 
import java.util.Scanner;

public class Estudos{
  public static void main(String args[]){
    // para ler a entrada do usuário
    Scanner entrada = new Scanner(System.in);
    // coordenadas dos dois pontos
    double x1, y1, x2, y2;
    // guarda os comprimentos dos catetos oposto e adjascente
    double cateto_oposto, cateto_adjascente;
    // guarda o ângulo tetha (em radianos) e a tangente
    double tetha, tangente; 
       
    // x e y do primeiro ponto
    System.out.print("Coordenada x do primeiro ponto: ");
    x1 = Double.parseDouble(entrada.nextLine());
    System.out.print("Coordenada y do primeiro ponto: ");
    y1 = Double.parseDouble(entrada.nextLine());
    
    // x e y do segundo ponto
    System.out.print("Coordenada x do segundo ponto: ");
    x2 = Double.parseDouble(entrada.nextLine());
    System.out.print("Coordenada y do segundo ponto: ");
    y2 = Double.parseDouble(entrada.nextLine());   
     
    // vamos obter o comprimento do cateto oposto
    cateto_oposto = y2 - y1;
    // e agora o cateto adjascente
    cateto_adjascente = x2 - x1;
    // vamos obter o ângulo tetha, ou seja, a inclinação da hipetunesa
    // (em radianos, não se esqueça)
    tetha = Math.atan2(cateto_oposto, cateto_adjascente);
    // e finalmente usamos a tangente desse ângulo para calcular
    // o coeficiente angular
    tangente = Math.tan(tetha);
     
    // mostramos o resultado
    System.out.println("O coeficiente angular é: " + tangente);
    
    System.out.println("\n\n");
    System.exit(0);
  }
} 

Ao executar este código você verá que o resultado é o mesmo. No entanto, fique atento às propriedades do coeficiente angular da reta:

1) O coeficiente angular é positivo quando a reta for crescente, ou seja, m > 0;

2) O coeficiente angular é negativo quando a reta for decrescente, ou seja, m < 0;

3) Se a reta estiver na horizontal, ou seja, paralela ao eixo x, seu coeficiente angular é zero (0).

4) Se a reta estiver na vertical, ou seja, paralela ao eixo y, o coeficiente angular não existe.


Desafios, Exercícios e Algoritmos Resolvidos de Java

Veja mais Dicas e truques de Java

Dicas e truques de outras linguagens

Códigos Fonte

Programa de Gestão Financeira Controle de Contas a Pagar e a Receber com Cadastro de Clientes e FornecedoresSoftware de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento
Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidadesControle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades
Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: C
6º lugar: Delphi
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2025 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 48 usuários muito felizes estudando em nosso site.