Você está aqui: Java ::: Dicas & Truques ::: Threads |
Aprenda a usar o método sleep() da classe ThreadQuantidade de visualizações: 18473 vezes |
A classe Thread possui um método estático sleep() que nos permite pausar a execução da thread atual durante um determinado número de milisegundos. Veja a assinatura deste método: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- public static void sleep(long millis) throws InterruptedException Quando chamamos sleep(), a thread atual abandonará a CPA e irá para o estado "dormindo". Quando a quantidade de milisegundos transcorrer, a thread será movida para o estado "pronta" e será executada novamente tão logo o gerenciador de threads o permita. Veja um exemplo no qual temos duas threads. Note a chamada ao método sleep() da primeira thread(): ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- // criamos uma classe que servirá como thread class MinhaThread implements Runnable{ private String nome; public MinhaThread(String nome){ this.nome = nome; } public void run(){ for(int i = 1; i <= 20; i++){ System.out.println(nome + ": " + i); if((i == 6) && (nome.equals("Thread 1"))){ try{ System.out.println(nome + " foi dormir um pouco"); Thread.sleep(5000); // 5 segundos } catch(InterruptedException e){ System.out.println(e.getMessage()); } } } } } public class Estudos{ public static void main(String[] args){ // vamos criar duas threads MinhaThread mt1 = new MinhaThread("Thread 1"); Thread t1 = new Thread(mt1); t1.start(); MinhaThread mt2 = new MinhaThread("Thread 2"); Thread t2 = new Thread(mt2); t2.start(); } } Execute este código e perceberá que a primeira thread conta até 6 e vai "dormir". Quando este tempo é decorrido ela volta e finaliza seu trabalho. Uma detalhe importante é que a thread principal (aquela do método main()) fica aguardando a thread acordar. Este comportamento é alterado se colocarmos: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- System.exit(0); como última instrução no método main(). Note que não temos controle sobre quando tempo a CPU reserva para cada thread. Assim, é possível que as instruções: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- System.out.println(nome + " foi dormir um pouco"); Thread.sleep(5000); // 5 segundos não sejam executadas consecutivamente. Por ser que a thread 1 escreva que vai dormir, a thread 2 ganhe a CPU, seja executada e então somente quando a thread 1 retornar ela irá de fato dormir. |
Link para compartilhar na Internet ou com seus amigos: |
Java ::: Dicas & Truques ::: Arquivos e Diretórios |
Manipulação de arquivos em Java - Como ler o conteúdo de um arquivo um byte de cada vezQuantidade de visualizações: 11037 vezes |
Nesta dica mostrarei como ler texto de um arquivo um byte de cada vez. Para isso vamos usar o método readByte() da classe DataInputStream, do pacote java.io. Note que este método retorna um inteiro com sinal na faixa de -128 até 127. Neste exemplo faremos um cast do byte lido para um char, já que estaremos lendo um arquivo de texto. Sim, é isso mesmo que você pensou. Se houver caracteres acentuados no arquivo texto, os mesmo não serão exibidos corretamente. A idéia do exemplo é mostrar o funcionamento do método readByte(). Veja o código Java completo: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- package arquivodecodigos; import java.io.*; public class Estudos{ public static void main(String[] args){ try { DataInputStream in = new DataInputStream(new BufferedInputStream( new FileInputStream("C:\\java\\conteudo.txt"))); while (in.available() != 0){ System.out.print((char) in.readByte()); } } catch (IOException e){ System.out.println("Erro: " + e.getMessage()); } System.exit(0); } } Ao executarmos este código nós teremos o seguinte resultado: Primeira linha do arquivo Segunda linha do arquivo Terceira linha do arquivo |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Métodos, Procedimentos e Funções |
Exercício Resolvido de Java - Um método Java chamado calcular(int a, int b) que recebe duas variáveis do tipo int e multiplica um valor pelo outro. Em seguidaQuantidade de visualizações: 682 vezes |
Pergunta/Tarefa: Escreva um método Java chamado calcular(int a, int b) que recebe duas variáveis do tipo int e multiplica um valor pelo outro. Em seguida o método deverá dividir o resultado, ou seja, o produto, por 2, e, finalmente, retornar o resto de uma divisão inteira desse resultado pelo número 7. Sua saída deverá ser parecida com: Informe o primeiro valor inteiro: 18 Informe o segundo valor inteiro: 19 O resultado é: 3 Veja a resolução comentada deste exercício usando Java: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- package estudos; import java.util.Scanner; public class Estudos{ public static void main(String args[]){ // vamos usar a classe Scanner para ler a entrada do usuário Scanner entrada = new Scanner(System.in); // vamos pedir para o usuário informar dois números inteiros System.out.print("Informe o primeiro valor inteiro: "); int a = Integer.parseInt(entrada.nextLine()); System.out.print("Informe o segundo valor inteiro: "); int b = Integer.parseInt(entrada.nextLine()); // vamos obter o resultado de uma chamada à função calcular() int resultado = calcular(a, b); System.out.println("O resultado é: " + resultado); } public static int calcular(int a, int b){ // primeiro multiplicamos as duas variáveis int produto = a * b; // agora dividimos o produto por 2 int temp = produto / 2; // agora obtemos o módulo do resultado por 7 int resultado = temp % 7; // e retornamos o valor calculado return resultado; } } |
Java ::: Coleções (Collections) ::: ArrayList |
Como rotacionar os elementos de uma ArrayList do Java para frente ou para trás usando o método rotate()Quantidade de visualizações: 11049 vezes |
Nesta dica mostrarei como podemos usar o método rotate() da classe Collections da linguagem Java para rotacionar os elementos de uma ArrayList. Veja sua assinatura:void rotate(List<?> list, int distance) Este método faz com que um elemento na posição i seja movido para a posição (distance + i) % list.size(). Se você quiser inverter a ordem da rotação, forneça um valor negativo para o argumento distance. Veja o código completo para o exemplo: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- package estudos; import java.util.ArrayList; import java.util.Collections; public class Estudos{ public static void main(String[] args){ // cria uma ArrayList que conterá strings ArrayList<String> nomes = new ArrayList<String>(); // adiciona itens na lista nomes.add("Carlos"); nomes.add("Maria"); nomes.add("Fernanda"); nomes.add("Osmar"); // exibe os elementos da ArrayList System.out.println("Antes da rotação:\n"); for(int i = 0; i < nomes.size(); i++) System.out.println(nomes.get(i)); // Vamos rotacionar os elementos uma posição Collections.rotate(nomes, 1); // exibe os elementos da ArrayList System.out.println("\nDepois da rotação:\n"); for(int i = 0; i < nomes.size(); i++) System.out.println(nomes.get(i)); System.exit(0); } } Ao executar este código Java nós teremos o seguinte resultado: Antes da rotação: Carlos Maria Fernanda Osmar Depois da rotação: Osmar Carlos Maria Fernanda |
Desafios, Exercícios e Algoritmos Resolvidos de Java |
Veja mais Dicas e truques de Java |
Dicas e truques de outras linguagens |
Códigos Fonte |
Software 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 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 |