我想睡一个线程,但我无法弄明白我尝试使用Thread.sleep和Timer但我无法实现这是我的代码:
public class HiloEscrituraSerial implements Runnable{
private volatile boolean inicio = false;
OutputStream out;
int contador =0;
private Vector<byte[]> datos;
public HiloEscrituraSerial(){}
public void run(){
Pruebas.lecturaCompleta = false;
Timer t = new Timer(10, null);
t.setDelay(3000);
t.setRepeats(true);
t.start();
System.out.println(FrmPrincipal.linea() +" Comenzando a enviar la prueba al certificador");
while(inicio){
try{
for(int i = 0;i<datos.size();i++){
//se deja un delay para que envie los comandos cada 0.1 seg.
/*
try{
Thread.sleep(10);
} catch (InterruptedException ex)
System.out.println(FrmPrincipal.linea() + " Error al dormir el hilo. "+Constantes.MENSAJE_MANUAL);
//Logger.getLogger(HiloEscrituraSerial.class.getName()).log(Level.SEVERE, null, ex);
}*/
this.out.write(datos.get(i));
System.out.println(FrmPrincipal.linea() + " La prueba fue enviada al certificador");
}
//cuando termine el de enviar los comandos finalizar el ciclo
inicio = false;
}
catch (IOException e){
System.out.println(FrmPrincipal.linea() + " Error en envio de datos al certificador. "+Constantes.MENSAJE_MANUAL);
//e.printStackTrace();
}
}
t.stop();
Pruebas.lecturaCompleta = true;
}
public void setOutput(OutputStream out){
this.out = out;
}
void setDatos(Vector<byte[]> comando){
datos = comando;
}
public void setBegins(){
inicio = true;
}
public void setClose(){
inicio = false;
}
}
我需要将线程休眠20毫秒才能再次在串口中写入。 有人可以帮帮我。
答案 0 :(得分:1)
我不理解您的代码,也无法测试它,但以下工作:
public class Test {
public static void main(String[] args) {
new Thread(){
@Override
public void run() {
for (;;) {
try {
Thread.currentThread().sleep(1000);
} catch (InterruptedException e) {
}
System.out.println("Executed");
}
}
}.start();
}
}
如果您想获得更多帮助,请将您的帖子更新为简化示例(不使用外部类和英文命名标识符)。