线程休眠方法800毫秒的表达方式

一、程序进程,线程的区别

       进程可以理解为正在进行的程序它是从程序加载、执行、执行完毕的整个过程,多个进程可以共享操作系统所管理的资源比如剪切板。烸个进程都单独占用一块内存多个进程之间不能数据共享,必须通过网络交换数据

       线程是比进程更小的执行单位,一个进程在执行过程中可以产生多个线程。线程是一个进程内部的多个并行的运行单元同一个进程的多个线程之间可以通过内存共享数据。通俗地讲線程是运行在进程中的小“进程”。

二、Java中的多线程

       Java程序执行时先启动了一个主线程,即main方法在main方法中,可以开启其他线程当main方法執行完毕的时候,程序不会退出只有所有线程都执行完毕,Java程序才会退出

// 如果产品不够,就等待

}

在程序中要使一个线程休眠方法直接使用Thread.sleep()方法即可

sleep最好使用在run方法的内部,因为写在run方法内部可以让该线程休眠方法

4. sleep究竟是让哪一个线程休眠方法?

sleep方法只能让当前線程睡眠调用某一个线程类的对象t.sleep(),睡眠的不是t而是当前线程。

当前运行的线程名称: main
}

sleep() 的作用是让当前线程休眠方法即当前线程会从“运行状态”进入到“休眠(阻塞)状态”。sleep()会指定休眠时间线程休眠方法的时间会大于/等于该休眠时间;在线程重新被唤醒时,它会由“阻塞状态”变成“就绪状态”从而等待cpu的调度执行。

下面通过一个简单示例演示sleep()的用法

// i能被4整除时,休眠100毫秒

程序比較简单在主线程main中启动线程t1。t1启动之后当t1中的计算i能被4整除时,t1会通过Thread.sleep(100)休眠100毫秒

     我们知道,wait()的作用是让当前线程由“运行状态”进叺“等待(阻塞)状态”的同时也会释放同步锁。而sleep()的作用是也是让当前线程由“运行状态”进入到“休眠(阻塞)状态”但是,wait()会释放对象嘚同步锁而sleep()则不会释放锁。

下面通过示例演示sleep()是不会释放锁的

// i能被4整除时,休眠100毫秒

主线程main中启动了两个线程t1和t2t1和t2在run()会引用同一个對象的同步锁,即synchronized(obj)在t1运行过程中,虽然它会调用Thread.sleep(100);但是t2是不会获取cpu执行权的。因为t1并没有释放“obj所持有的同步锁”!

// i能被4整除时,休眠100毫秒
}

我要回帖

更多关于 线程休眠方法 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信