JAVA的多线程
一、线程基本概念
将1个程序转换成多个独立运行的子任务。每个子任务都叫做一个线程。
“进程”是指一种“自包容”的运行程序。有自己的地址空间。一个进程可以容纳多个同时执行的线程。
事实上,多线程最主要的一个用途就构建1个“反应灵敏”的用户界面。
二、线程的使用
1、 创建一个线程
最简单的方法就是从Thread类继承这个类,包含了创建和运行线程所需的一切东西。
Thread最重要的是run方法,继承类必须对之进行重载,使其按自己的意愿来做事。
2、线程的几个重要方法
(1) run方法
用start方法激活线程时,线程要运行的方法
(2) start方法
当线程创建后,处于待命状态,只有调用start方法才能激活,使之运行
(3) setpriority方法
设置线程的优先级,例:Thead.setpriority(5).
优先级高的线程先执行。
Java 的Error Handing with Exceptions
一、例外机制
1、 强制捕获错误
2、 便于将业务逻辑代码与例外控制代码分开。
二、基本的违例
1、 要区分“例外条件”(exceptional condition)与“普通问题”
1) 例外条件:没有足够的上下文来处理出现的问题。
2) 普通问题:有足够上下文来处理问题
2、 仍出一个例外时,Java将要做的事:
1) 在堆中,用new创建一个例外对象(exception object)
2) 程序停止正常的运行,并由例外控制器(exception handler)来解决发生的问题。
3、 Throwable对象
针对不同的错误类型,要求throw 不同的例外处理对象。
错误的信息在throwable 对象及throw 例外对象的对象中保存。
三、例外的捕获
1、 假如一个方法throw一个例外,它必须假定这个例外将被捕获(catch).
2、 警戒区域(guarded region)
可能出现例外的code region
try
{
guarded region
}
你可以将要检查错误的代码置于try块中,并在随后捕获可能出现的错误。
3、例外控制器(Exception Handlers)
try
{
//code that might generate exceptions
}
catch(Type id1)
{
//Handle exceptions of Type1
}
catch (Type id2)
{
//Hand exceptions of Type2
}
//etc
说明:有时catch clause 的参数在程序中并没有使用,但参数仍必须给出。
四、例外标准(规范)
1、 如果类的一个方法中,可能会“掷”出异常,则在类方法的定义时,要说明违例类型。
void f() throws tooBig,tooSmall,divZero
{
}
2、 如果一个方法声明时带了“throws”声明,则调用者必须对异常进行捕获,这是Java编译器所强制的。
3、即使,在方法中你实际没有“掷出”异常,你仍可以用”throws”关键字。
五、异常处理的几点说明
1、可以在一个abstract class类的方法声明中使用throws关键字
2、如果方法声明中带throws参数,调用者必须对之捕获。
3、catch 子句 :catch (异常类 异常类变量)
4、当重载一个方法时,你只能throw基础类中定义的异常类型。
这种限制,不适合类的构造函数。
5、违例匹配
(1) 掷出一个异常后,异常控制系统会按当初编写的顺序搜索最近的控制器
(2) 一个衍生类对象可与基础类的一个控制器相匹配
(3) 如果catch子句的基础类在前,会编译报错。