Você está aqui: Java ::: Dicas & Truques ::: Threads |
Entenda o ciclo de vida de uma threadQuantidade 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. |
![]() |
Java ::: Classes e Componentes ::: JTextArea |
Java Swing - Como obter o texto selecionado em um controle JTextArea do Java SwingQuantidade 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çãoQuantidade 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 Veja a resolução comentada deste exercício em Java:
| ||||
Java ::: Dicas & Truques ::: Geometria, Trigonometria e Figuras Geométricas |
Como calcular o coeficiente angular de uma reta em Java dados dois pontos no plano cartesianoQuantidade 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 |
![]() 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 |
![]() 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 |