Tag: 睡眠

在深度睡眠中连接到蓝牙设备失败

我试图每隔25秒连接一个配对的蓝牙设备,通过AlarmManager调度,触发WakefulBroadcastReceiver启动服务进行连接。 一旦设备进入睡眠状态,一切都会在最初的几个小时内发挥作用,但是大约4-5个小时后,当我认为设备进入深度睡眠状态时,它会开始失效。 我从ParcelFileDescriptor得到一个NullPointerException,声明“FileDescriptor不能为空”。 我已经尝试过搜索这个错误,甚至已经浏览了ParcelFileDescriptor.java中的代码,但我已经走到了尽头。 我在带有Android 4.4.2的Nexus 10上运行它。 尝试连接的代码如下: public GatewaySocket getSocket() throws IOException { if (!BluetoothAdapter.checkBluetoothAddress(macAddress)) return new GatewaySocket(“Address ” + macAddress + ” is not a valid Bluetooth MAC Address”); BluetoothAdapter bluetooth = BluetoothAdapter.getDefaultAdapter(); if (bluetooth == null) return new GatewaySocket(“Sorry, no Bluetooth adapter available”); BluetoothDevice device = bluetooth.getRemoteDevice(macAddress); BluetoothSocket btSocket = null; try […]

Java内存行为:与Thread.sleep不同

我正在尝试使用visualvm进行一些内存分析。 我编写了一个基本代码,它运行一个无限循环来向List添加对象。 package home.always.learning.java; import java.util.ArrayList; import java.util.List; public class Heaper { private static List listObj = new ArrayList(); private static final String nameConst = “Tarun Trehan”; public static void main(String[] args)throws Exception{ personListCreation(); } public static void personListCreation() throws Exception { int i = 0; while(true) { System.out.println(“Looping to create person list…”); i++; listObj.add(new […]

Java线程hibernate和中断exception

为什么sleep线程需要try catch来捕获Interrupted Exception? 为什么睡眠甚至会发出中断exception错误? 这是我在java编程中真正想知道的两个问题,我一直在谷歌搜索,我还没有找到一个明确的解释是为什么这两件事发生。

让java程序在没有线程的情况下hibernate

我有一个java程序进行一些计算,然后将结果上传到MYSQL数据库(托管在同一网络中的另一台计算机)。 我有时会面临程序执行计算的速度快于上传结果的问题。 因此无法上传所有结果。 该程序目前没有线程。 有没有办法让程序在完成计算后睡眠几毫秒,以便正确上传。 (就像在其他语言中睡觉或等待function) 我可以编程程序,但这将是太多的重写。 有更容易的方法吗? 谢谢

如何让线程在java中睡眠特定的时间?

我有一个场景,我希望一个线程睡眠特定的时间。 码: public void run(){ try{ //do something Thread.sleep(3000); //do something after waking up }catch(InterruptedException e){ // interrupted exception hit before the sleep time is completed.so how do i make my thread sleep for exactly 3 seconds? } } 现在,我如何处理我试图运行的线程在完成睡眠之前被中断的exception命中的情况? 线程在被中断后唤醒并且它是否进入可运行状态,或者只有在它进入runnable之后它才会进入catch块?

Thread.sleep()实现

今天我接受了一次采访,我向候选人询问了关于Thread.sleep()和Object.wait()之间区别的常见和基本问题。 我希望他回答类似这样的事情 ,但他说这些方法基本上都是一样的,而且很可能Thread.sleep在其中使用了Object.wait() ,但是sleep本身不需要外部锁定。 这不是一个正确的答案,因为在JDK 1.6中,此方法具有以下签名。 public static native void sleep(long millis) throws InterruptedException; 但我的第二个想法是,这不是那么荒谬。 可以使用定时等待来实现相同的效果。 看一下下面的代码片段: public class Thread implements Runnable { private final Object sleepLock = new Object(); // other implementation details are skipped public static void sleep(long millis) throws InterruptedException { synchronized (getCurrentThread().sleepLock){ getCurrentThread().sleepLock.wait(millis); } } 在这种情况下, sleepLock是一个特别用于sleep方法内的同步块的对象。 我假设Sun / Oracle工程师知道Occam的剃刀,所以sleep本身就是故意实现的,所以我的问题是为什么它使用本机调用。 我想出的唯一想法是假设有人可能会找到像Thread.sleep(0)这样有用的调用。 […]

如果Thread.sleep是静态的,那么各个线程如何知道它被置于睡眠状态?

我对Thread.sleep()方法有点困惑。 如果Thread.sleep()是一个静态方法,两个线程如何知道哪个线程进入hibernate状态。 例如,在下面的代码中,我有两个三个Threads main , t和t1 。 我总是调用Thread.sleep() 。 不是t.sleep() 。 这是否意味着Thread.sleep()将当前线程置于睡眠状态? 这意味着Thread实例通过调用静态方法自行进入hibernate状态。 如果t1想要睡觉怎么办? 那应该不可能正确吗? public class ThreadInterrupt { public static void main(String[] args) throws InterruptedException { System.out.println(“Starting.”); Thread t = new Thread(new Runnable(){ @Override public void run() { Random ran = new Random(); for (int i = 0; i < 1E8; i++) { try […]

使用Thread.sleep进行测试

使用Thread.sleep()加速测试的推荐方法是什么? 当连接断开或发生超时错误时,我正在测试具有重试function的网络库。但是,库在重试之间使用Thread.sleep() (因此在服务器重启时它不会连接数千次) 。 该调用显着减慢了unit testing,我想知道选项是什么来覆盖它。 注意,我愿意实际更改代码,或者使用模拟框架来模拟Thread.sleep(),但是我想先听听您的意见/建议。

如何检查线程是否正在睡眠?

有没有办法检查给定的线程是否正在睡眠?

在Java中检测OS Sleep和Wake Up事件

有没有办法让Java程序检测操作系统何时即将进入hibernate状态,或者是否失败,至少检测到唤醒? 实际问题是在特定应用程序中,许多MySQL数据库操作在后台运行。 在Windows机器上进行测试时,这些数据库事务在睡眠/唤醒周期后中断,导致程序中出现大量错误情况。 这些错误通常如下所示: java.net.SocketExceptionexception 消息:软件导致连接中止:recv失败 如果我们能够对“即将入睡”事件作出反应,我们可以尝试暂停后台操作以解决问题。 理想情况下,如果我们能够对“刚刚醒来”事件作出反应,我们至少可以抑制错误消息。