Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

196
Visualizações
El temporizador continúa después de la cantidad de tiempo especificada

Estoy tratando de realizar lo que hay dentro de la condición while, pero cuando la condición finaliza, los subprocesos continúan verificando la salida. Necesito detener lo que hay dentro del ciclo while de acuerdo con el temporizador, básicamente haciendo el trabajo del temporizador.

 public static long start = System.currentTimeMillis(); public static long end = start + 10 * 1000; // 10 seconds * 1000 ms/sec while (System.currentTimeMillis() <= end) { Thread t = new Thread(new UserGenerator()); Thread t1 = new Thread(new Vote()); t.start(); Thread.sleep(1000); t1.start(); Thread.sleep(1000); } System.err.println("Time Done");

producción

 Name:Alaine,Email:lg@shapirosher.com ,SSN:516517 Name:Adriana,Email:donbenchoff@comcast.net ,SSN:526527 Time Done User 516517 Voted User 526527 Voted BUILD SUCCESSFUL (total time: 16 seconds)
over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Esto es lo que hace el código anterior:

  • Se ejecuta durante 10 segundos.
  • Genera un hilo de UserGenerator y un hilo de Vote por segundo
  • Entra en estado de suspensión en el medio

Entonces, después de 10 segundos, el ciclo while terminará y el hilo main saldrá. Sin embargo, 5 threds iniciados por él continuarán ejecutándose (hasta que finalice su método de run o se produzca una excepción). Depende de cómo run implemente el método de ejecución en las clases UserGenerator y Vote . Por ejemplo, si hay un ciclo infinito, esos subprocesos continuarán ejecutándose y el programa nunca se cerrará.

over 4 years ago · Santiago Trujillo Relatório

0

No estoy seguro de tener suficiente información para una respuesta completa, sin embargo, puede intentar esto:

 long start = System.currentTimeMillis(); long end = start + (10 * 1000); // 10 seconds * 1000 ms/sec List<UserGenerator> us = new ArrayList<>(); List<Vote> vs = new ArrayList<>(); Thread t, t1; while (System.currentTimeMillis() <= end) { UserGenerator u; Vote v; t = new Thread( u = new UserGenerator()); t1 = new Thread(v = new Vote()); t.start(); us.add(u); if(end - System.currentTimeMillis() >= 1000) Thread.sleep(1000); t1.start(); vs.add(v); if(end - System.currentTimeMillis() >= 1000) Thread.sleep(1000); } t.interrupt(); t1.interrupt(); //the following may be redundant. It depends in what // UserGenerator and Vote do for(int i =0; i < us.ssize() ; i++) { us.get(i).stop(); vs.get(i).stop(); } System.err.println("Time Done"); } long start = System.currentTimeMillis(); long end = start + (10 * 1000); // 10 seconds * 1000 ms/sec List<UserGenerator> us = new ArrayList<>(); List<Vote> vs = new ArrayList<>(); Thread t, t1; while (System.currentTimeMillis() <= end) { UserGenerator u; Vote v; t = new Thread( u = new UserGenerator()); t1 = new Thread(v = new Vote()); t.start(); us.add(u); if(end - System.currentTimeMillis() >= 1000) Thread.sleep(1000); t1.start(); vs.add(v); if(end - System.currentTimeMillis() >= 1000) Thread.sleep(1000); } t.interrupt(); t1.interrupt(); //the following may be redundant. It depends in what // UserGenerator and Vote do for(int i =0; i < us.ssize() ; i++) { us.get(i).stop(); vs.get(i).stop(); } System.err.println("Time Done"); }
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda