黑马程序员技术交流社区

标题: 面试常见问题二-- [打印本页]

作者: pengmin    时间: 2016-5-16 23:56
标题: 面试常见问题二--
异?常:★★★
异常处理原则:功能抛出几个异常,,抛几个就处理几个。?
功能调用如果进行try处理,需要与之对应的catch处理代码块,这样的处理有针对性
特殊情况:try对应多个catch时,如果有父类的catch语句块,一定要放在下面。
throw?和throws关键字的区别:?
throw用于抛出异常对象,后面跟的是异常对象;throw用在函数内。?
throws用于抛出异常类,后面跟的异常类名,可以跟多个,用逗号隔开。throws用在函数上。

线程的2种创建方式(必问)?
创建线程的第一种方式:继承Thread?,由子类复写run方法。?

步骤:?
1,定义类继承Thread类;?
2,目的是复写run方法,将要让线程运行的代码都存储到run方法中;?3,通过创建Thread类的子类对象,创建线程                        对象;?
4,调用线程的start方法,开启线程,并执行run方法。?
线程状态:?
新建:继承Thread类或者实现Runnable接口                s
运行:具备执行资格,同时具备执行权;start()?用于开始一个线程让一个线程运行
冻结:sleep(time)线程进入休眠,wait()等待—notify()唤醒;线程释放了执行权,同时释放执行资格;?
临时阻塞状态:线程具备cpu的执行资格,没有cpu的执行权;?
消亡:stop()?

创建线程的第二种方式:实现一个接口Runnable。
?步骤:?
1,定义类实现Runnable接口。?
2,覆盖接口中的run方法(用于封装线程要运行的代码)。
?3,通过Thread类创建线程对象;?
4,将实现了Runnable接口的子类对象作为实际参数传递给Thread类中的构造函数。
?为什么要传递呢?
因为要让线程                对象明确要运行的run方法所属的对象。?
5,调用Thread对象的start方法。开启线程,并运行Runnable接口子类中的run方法。?
Ticket?t?=?new?Ticket();?
New Thread(t).start()
/*?
直接创建Ticket对象,并不是创建线程对象。?
因为创建对象只能通过new?Thread类,或者new?Thread类的子类才可以。?
所以最终想要创建线程。既然没有了Thread类的子类,就只能用Thread类。?*/?
Thread?t1?=?new?Thread(t);?//创建线程。


作者: 随风而逸    时间: 2016-5-17 00:00
赞  不会刚好看看
作者: cxl1694095035    时间: 2016-5-17 11:21
总结的不错,会了
作者: tuan2016    时间: 2016-5-17 11:38
感谢分享,学习了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2