/** * Thread类中的sleep()方法; * 这个方法的意思就是睡眠 * 好吧,如果你觉得不够具体,可以认为是让当前线程暂停一下, * 当前线程随之进入阻塞状态,当睡眠时间结束后,当前线程重新进入就绪状态,开始新一轮的抢占计划! * * 线程处于运行状态-------->当前线程执行sleep(具体毫秒值)方法------->当前线程进入阻塞状态 * ------>当睡眠时间到时------->该线程重新进入就绪状态----->与其他线程一起抢占CPU * * 要注意的是: * 线程sleep()的时候,如果线程持有某块代码块的锁对象! * 则该线程是不会释放该代码块的锁对象的! * 也就是说当前线程即使通过sleep()方法进入阻塞状态,锁对象依然没有释放,如果此时其他的线程获取到了 * CPU的执行权,但是他没有锁对象,该线程依然无法执行同步代码块,只能阻塞。只有当持有锁对象的线程睡完了 * 并且转为就绪状态,而且成功被CPU临幸,该线程执行完之后,会释放锁对象,(效率变得好低)。 * * 而 线程得wait()方法,也是从运行状态进入阻塞状态,但是wait()方法是会释放锁对象的!!!! * * * **/ public class ThreadStudy { //检查网络是否畅通的例子! public static void main(String[] arg) throws Exception { for (int i = 0; i <= 1000; i++) { //发送请求1000次 //如果网络畅通,则该线程休眠6秒后,再次发送请求 if (IsInternetAccess()) { //静态不能访问非静态 Thread.sleep(1000 * 6);//注意这里 } else { //如果网络不通畅,直接提示错误信息,循环结束 System.out.println("Error! Can not Access Internet!"); break; } } } //检查网络是否通畅的具体代码。最后得到的结果 true代表网络通常,而false代表网络不通畅! private static Boolean IsInternetAccess() { //bala bala //return true; return true; } }
Thread类的sleep()方法
最新推荐文章于 2024-01-28 08:23:16 发布