Programming in Java: Multi-threads and interface vs abstract class
2016-03-17 13:51
567 查看
1) What is the difference of sleep() and wait()?
from: http://www.cnblogs.com/plmnko/archive/2010/10/15/1851854.html
1、这两个方法来自不同的类分别是,sleep来自Thread类,和wait来自Object类。
sleep是Thread的静态类方法,谁调用的谁去睡觉,即使在a线程里调用了b的sleep方法,实际上还是a去睡觉,要让b线程睡觉要在b的代码中调用sleep。
2、最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法。
sleep不出让系统资源;wait是进入线程等待池等待,出让系统资源,其他线程可以占用CPU。一般wait不会加时间限制,因为如果wait线程的运行资源不够,再出来也没用,要等待其他线程调用notify/notifyAll唤醒等待池中的所有线程,才会进入就绪队列等待OS分配系统资源。sleep(milliseconds)可以用时间指定使它自动唤醒过来,如果时间不到只能调用interrupt()强行打断。
Thread.Sleep(0)的作用是“触发操作系统立刻重新进行一次CPU竞争”。
3、使用范围:wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在任何地方使用
synchronized(x){
x.notify()
//或者wait()
}
4、sleep必须捕获异常,而wait,notify和notifyAll不需要捕获异常
2) Difference of abstract class and interface:
Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。
接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。
The more detailed comparison will be in: http://zhidao.baidu.com/question/53278465.html
from: http://www.cnblogs.com/plmnko/archive/2010/10/15/1851854.html
1、这两个方法来自不同的类分别是,sleep来自Thread类,和wait来自Object类。
sleep是Thread的静态类方法,谁调用的谁去睡觉,即使在a线程里调用了b的sleep方法,实际上还是a去睡觉,要让b线程睡觉要在b的代码中调用sleep。
2、最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法。
sleep不出让系统资源;wait是进入线程等待池等待,出让系统资源,其他线程可以占用CPU。一般wait不会加时间限制,因为如果wait线程的运行资源不够,再出来也没用,要等待其他线程调用notify/notifyAll唤醒等待池中的所有线程,才会进入就绪队列等待OS分配系统资源。sleep(milliseconds)可以用时间指定使它自动唤醒过来,如果时间不到只能调用interrupt()强行打断。
Thread.Sleep(0)的作用是“触发操作系统立刻重新进行一次CPU竞争”。
3、使用范围:wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在任何地方使用
synchronized(x){
x.notify()
//或者wait()
}
4、sleep必须捕获异常,而wait,notify和notifyAll不需要捕获异常
2) Difference of abstract class and interface:
Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。
接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。
The more detailed comparison will be in: http://zhidao.baidu.com/question/53278465.html
相关文章推荐
- spring cron表达式
- Struts2 的各种xml 和struts 配置信息 都是一样的
- Spring注入失败的几点原因!!
- javase-NIO
- Java Socket通信(一)之客户端程序 发送和接收数据
- MyEclipse JAX-WS Web Service
- java中序列化与反序列化
- myeclipse下部署项目到web服务器时报空指针异常的问题
- 使用Eclipse编写Processing小程序
- java 重定向和转发的区别
- ubuntu中安装 jre 和eclipse
- java String.split()方法学习笔记
- Java NIO系列教程(二) Channel
- Java NIO系列教程(一) Java NIO 概述
- JAVA基础
- Java 序列化
- spring整合hibernate的时候报异常org.hibernate.HibernateException: createQuery is not valid without active transaction
- java虚拟机运行参数
- Java 程序死锁问题原理及解决方案
- Git与Eclipse结合