多线程与异常处理.pptx
第七章多线程与异常处理
1多线程的基本概念2程序、进程与线程5通过实现Runnable接口4通过继承Thread类3多任务与多线程Java多线程编程学习内容
一、多线程的基本概念多任务计算机操作系统同时执行几个程序或任务的能力,如下所示:电脑听歌下载QQ聊天
多线程在同一应用程序中,有多个控制流同时执行,如下所示:QQ聊天文字聊天视频聊天发送文件
是一组指令的有序集合,是静态的代码;例如:你的机器安装了一个QQ程序。程序是某个程序的一次执行过程,是一个动态的实体,它有自己的生命周期;例如:同时允许两个帐号登陆,那此时有两个QQ进程在运行。进程
线程是一个比进程更细微的程序执行序列,是进程的某个子序列。例如:上QQ后可以同时文字聊天,视频聊天和发送文件;此时该QQ进程创建并管理三个线程,如下:公共数据区(内存)进程线程A:文字线程B:视频线程C:传文件
提供了用于启动、阻塞、恢复以及终止线程的一系列方法,如:setPriority(3)、getName()等Thread类start()、sleep(1000)等除此之外,还提供了控制线程优先级以及得到线程的名字等方法,如:二、Java多线程编程
方法一:通过Thread类创建多线程定义Thread类的子类,如ThdDemo.java重写Thread类的run()方法,包含了线程要实现的操作;创建一个该子类的对象;Threadthd=newThdDemo();调用start()方法启动线程;thd.start();
publicclassThdDemoextendsThread{publicvoidrun(){for(inti=0;i5;i++){System.out.println(i);try{this.sleep(100);}catch(Exceptione){}}}publicstaticvoidmain(String[]args){Threadt=newThdDemo();t.start();//启动线程System.out.println(“Maincontinue!”);}}线程休眠100ms线程执行的任务
线程的生命周期创建状态就绪状态执行状态死亡状态阻塞状态newThdDemo()start()sleep(100)
currentThread():得到当前线程对象01getName():得到线程的名字02P205例7–1
1由于Java只支持单继承,使用扩展Thread类的方式实现多线程,就会导致应用程序不能继承其他的类;3Runnable接口中只有一个run()方法,实现该接口必须实现这个方法。2使程序能够多线程执行的更好的方法是实现接口;Runnable接口
方法二:通过Runnable接口创建多线程定义一个实现Runnable接口的类,该类必须实现接口中唯一的run()方法;publicclassRunThdimplementsRunnable{publicvoidrun(){//线程体}}创建一个该类的对象;RunThdrt=newRunThd();创建一个Thread类的对象;Threadth=newThread(rt);调用start()方法启动线程。
classRunThdimplementsRunnable{publicvoidrun(){//statement}}publicclassRunThdDemo{publicstaticvoidmain(String[]args){RunThdrt=newRunThd();Threadtd=newThread(rt);td.start();}}
P208例7–2比较例7–3、例7-4
错误致命性的,程序无法继续运行例如:内存溢出、堆栈溢出等一般通过修改程序避免错误的发生异常非致命性的,作相应的处理后程序可以继续运行例如:数组越界、文件找不到等三、异常处理
NullPointerException访问的对象还没有实例化ArrayIndexOutOfBoundsException访问数组元