public long getDistancia() { System.out.println("Medição de distância em progresso..."); this.trigger.low(); System.out.println("Aguardando tempo do pino..."); try { Thread.sleep(2000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } // Iniciando a leitura System.out.println("Iniciando a leitura"); try { // Envia o sinal no pino Trigger // Coloca o trigger em HIGH por 10uS (8 ultrasound bursts at 40 kHz) this.trigger.high(); TimeUnit.MICROSECONDS.sleep(10); this.trigger.low(); // Escuta o pino de ECHO // O sensor emitirá uma onda sonora que ao encontrar um obstáculo // rebaterá de volta em direção ao módulo, sendo que o neste tempo // de emissão e recebimento do sinal o pino ECHO ficará em nivel alto. // Logo o calcula da distância pode ser feito de acordo com o tempo em // que o pino ECHO permaneceu em nível alto após o pino Trigger ter // sido colocado em nível alto. long inicio = 0; long fim = 0; while (this.echo.isLow()) { inicio = System.nanoTime(); } while (this.echo.isHigh()) { fim = System.nanoTime(); } // Calcula a diferença entre "fim" e "inicio" long duracao_pulso = fim - inicio; // Calcula distância long distancia = 17150 * duracao_pulso; // Round distancia = Math.round(distancia); System.out.println("Distancia: " + distancia); return distancia; } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } return 0; }
public static void main(String[] args) throws IOException, InterruptedException { // 获取输出流 FileOutputStream fos = new FileOutputStream("data.txt"); // 从输出流中获取文件加锁对象,并锁定File FileLock fl = fos.getChannel().lock(); if (fl != null) { System.out.println("Locked File"); TimeUnit.MICROSECONDS.sleep(100); // 释放文件锁定 fl.release(); System.out.println("Release Lock"); } }
/** * 实现父类update函数 * * @parameter key zk路径 /BIZ * @parameter value zk路径中的数据 */ @Override public void update(String key, String value) { if (BIZ_PATH.equals(key)) { Map<String, BizType> target = new HashMap<String, MemcachedClient.BizType>(); String[] bizList = value.split("#"); for (String item : bizList) { String[] biz = item.split(","); String bizName = biz[0]; int bizType = 0; try { bizType = Integer.parseInt(biz[1]); } catch (Exception e) { e.printStackTrace(); } if (2 == biz.length) { int loop = 0; DistCacheAdapter adapter = null; while (null == adapter) { try { adapter = DistCacheAdapter.connect(bizName); } catch (Exception e) { adapter = null; } if (null == adapter) { try { TimeUnit.MICROSECONDS.sleep(50); } catch (InterruptedException e) { e.printStackTrace(); } } if (++loop > 10) { break; } } if (null != adapter) { BizType bizItem = new BizType(bizName, bizType, adapter); target.put(bizName, bizItem); } } } synchronized (lock) { bizMap.clear(); bizMap.putAll(target); } } }
public void doWork() throws InterruptedException { TimeUnit.MICROSECONDS.sleep(rand.nextInt(2000)); System.out.println(this + " completed"); }