一。异常
1. 异常:就是程序在运行时出现不正常情况。
2,异常的处理
java 提供了特有的语句进行处理。
try
{
需要被检测的代码;
}
catch(异常类 变量)
{
处理异常的代码;(处理方式)
}
finally
{
一定会执行的语句;
}
3.异常的常用方法。
e.getMessage();异常信息
e.toString());// 异常名称 异常信息。
e.printStackTrace();//异常名称,异常信息,异常出现的位置。
4.throws与throw区别
throws用函数上,throw用在函数内.
throws后面跟异常类名,可以跟多个类。throw 跟异常类对象。
5.多个catch时(为了具体异常,具体处理。catch块中的异常存继承时,父类放到后面)。
7.异常分类
编译时被检测异常,编译时不被检测的异常(运行时异常,RuntimeException 及其子类)
6.自定义异常类()
class ExtendException extends Exception
{
public ExtendException ()
{ super();}
public ExtendException(String msg)
{super(msg);}
}
class DivException
{
public int div(int x,int y)throws ExtendException
{
if(y<0)
throw new ExtendException(y+"小于");
return x/y;
}
}
class DivExceptionTest
{
public static void main(String[] args)
{
try
{
DivException d=new DivException();
int x=8;
int y=-1;
d.div(x,y);
}
catch(ExtendException e)
{
System.out.println(e.getMessage());
}
}
}
二,多线程。
1.线程与进程
进程:是一个正在执行中的程序。
线程:就是进程中的一个独立的控制单元。
2.线程生成。
2.1 第一种:继承Thread类实现public void run(){}
2.2 第二种:把实现Runnable接口中的public void run(){}的实例,传给Thread
实现方式(线程间可以共享资源“卖票”)和继承方式有什么区别呢?
继承Thread:线程代码存放Thread子类run方法中。
实现Runnable,线程代码存在接口的子类的run方法。
3.线程安全(读了错误数据)与同步(多次读写 wait() notify()) (安全与同步的 锁旗相同)
线程安全
问题的原因:当多条语句在操作同一个线程共享数据时,一个线程对多条语句只执行了一部分,还没有执行完,另一个线程参 与进来执行。导致共享数据的错误。
解决办法:对多条操作共享数据的语句,只能让一个线程都执行完。在执行过程中,其他线程不可以参与执行。
synchronized(对象){需要被同步的代码}
好处:解决了多线程的安全问题。
弊端:多个线程需要判断锁,较为消耗资源,
4.静态同步
静态的同步方法,使用的锁是该方法所在类的字节码文件对象。 类名.class
非静态的同步方法,使用的锁是该方法所在类的对象。
5.常用方法
join():
当A线程执行到了B线程的.join()方法时,A就会等待。等B线程都执行完,A才会执行。
B.join(1000) B执行1后再分离开。
interrupt();
将冻结状态,强制让线程恢复到运行状态中来。
由前台线程创建的线程默认也是前台线程。
isDaemon()和setDaemon()方法来判断和设置一个线程是否为后台线程
|
|