sleep和write的区别

来源:互联网 发布:锁屏也能抢红包的软件 编辑:程序博客网 时间:2024/06/06 12:52

sleep write区别

 

这两个的方法来自不同的类分别是 sleeep来自与 Thread Write来自Object

sleep Thread的静态方法谁调用睡去睡觉即使 a线程调用了b线程的sleep方法实际上还是a线程睡觉要让b线程睡觉只用在b的代码中调用sleep

 

最主要是sleep方法没有释放锁 wait方法释放了锁

 

wait notify notifyAll  她们都是定义在Object中的

都使用在同步中因为要对持有锁的线程操作

所以要使用在同步中因为只有同步中才有锁

wait和sleep区别: 分析这两个方法:从执行权和锁上来分析:

wait:可以指定时间也可以不指定时间。不指定时间,只能由对应的notify或者notifyAll来唤醒。

sleep:必须指定时间,时间到自动从冻结状态转成运行状态(临时阻塞状态)。

wait:线程会释放执行权,而且线程会释放锁。

Sleep:线程会释放执行权,但不是不释放锁。

可以调用interrupt()方法 wait的线程或sleep的线程获取执行权 但是会产生InterruptException异常

 

interrupt()中断线程。

setPriority(int newPriority)更改线程的优先级。

getPriority()返回线程的优先级。

toString()返回该线程的字符串表示形式,包括线程名称、优先级和线程组。

Thread.yield()暂停当前正在执行的线程对象,并执行其他线程。

setDaemon(true)将该线程标记为守护线程或用户线程。将该线程标记为守护线程或用户线程。当正在运行的线程都是守护线程时,Java 虚拟机退出。该方法必须在启动线程前调用。

join临时加入一个线程的时候可以使用join方法。

当A线程执行到了B线程的join方式。A线程处于冻结状态,释放了执行权,B开始执行。A什么时候执行呢?只有当B线程运行结束后,A才从冻结状态恢复运行状态执行。

 

 

原创粉丝点击