java线程.docx
- 文档编号:9461645
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:11
- 大小:365.21KB
java线程.docx
《java线程.docx》由会员分享,可在线阅读,更多相关《java线程.docx(11页珍藏版)》请在冰豆网上搜索。
java线程
Java线程
(一)
一异常回顾
异常:
在运行过程中,产生的问题;
异常结构:
try-catch,try-catch-finally,throws在方法(){}之间,后面可以跟多个异常,以逗号分割,
throw在方法中,创建一个异常对象;
自定义异常(参照NullPointerException)
1.1课程介绍
1.介绍为什么使用线程;
2.线程的实现的方式;--掌握(面试题)
3.线程方法;--掌握
4.线程方法应用;--掌握
二线程
2.1线程
问题:
现在我需要下载一部小电影?
应该怎么做?
第一:
可以使用浏览器的下载器直接下载,但是速度较慢;
第二:
可以使用迅雷软件下载电影,速度快;
那么为什么使用迅雷下载电影要比浏览器下载快?
原因非常简单因为迅雷使用了多线程,浏览器使用单线程,所以我们要不要学线程。
线程应用:
迅雷、比特彗星,快播;
学习线程之前,我们首先搞清楚进程是什么?
进程:
正在运行的应用程序(看成正在执行的一些代码);
线程:
看成是进程中的最小单元,
一个进程中可以有1个或者多个线程(其实也就是一小段代码);
线程其实也可以看成是一个轻量级的进程;(比如1个进程只有1个线程);
多线程下载软件为什么快?
CPU:
执行任务是以线程为单位;会在不同的时间片上不断的切换线程;
分析多线程下载快的原因:
假设上面的每一个线程的优先级都一样,并且CPU的平均分配时间都相等,比如每一个时间片是一分钟,如果5个软件同时下载20分钟,快播一共8个线程,占用8个时间片,
共8分钟,CPU在上面处理时间最多,所以会更快;但是不是说越多线程越快,如果电脑的内存只有128M,那开1000个线程,也会很慢;
2.2线程示例
示例:
一边玩游戏,一边播放音乐;
分析图示:
分析:
①希望实现可以一边玩游戏,一般播放背景音乐,使用两个打印语句模拟。
②把上面的两件事情封装成两个独立的线程,如何封装?
借助Java中Thread类。
③Thread类提供两个方法,一个run()方法(线程主体run方法),一个start()方法(启动一个线程)
④自定义两个类,继承Thread类,覆写run方法;最后在测试类,启动两个线程
2.3启动线程(实现Runnable方式)
回顾一下,一边打游戏,一边播放音乐是怎样实现的?
通过一个类,去实现Thread这个类,然后覆写里面的run方法,然后创建一个类的对象,
调用start方法进行启动;那我们先来系统的了解一下Thread这个类.
Thread类实现了Runnable接口,覆写里面的方法run方法,所以Thread类的run方法,也是来自Runnable接口;
实现线程方式:
①继承Thead类,覆写run方法,创建对象调用start方法启动线程
②实现Runnable接口,覆写run方法,创建线程对象(newThread(实例)),启动线程.
如下图示:
代码实现:
2.4启动线程两种方式
启动线程两种方式:
①通过继承Thread类
②实现Runnable接口
使用哪种方式更好?
区别:
一个类如果继承了其他类,就无法在继承Thread类,在Java中,一个类只能继承一个类,而一个类如果实现了一个接口,还可以实现其他接口,接口是可以多实现的,所以说
Runable的扩展性更强;
启动线程流程:
创建启动线程的方式一:
继承Thread类
①明确需要把什么事情封装成线程对象;
②自定义类extendsThread类
③覆写run方法:
写①
④创建自定义对象t
⑤启动线程t.start();
创建启动线程方式二:
实现Runnable接口
①明确需要把什么事情封装成线程对象;
②自定义类implementsRunnable接口
③覆写run方法:
写①
④创建自定义对象t
⑤启动线程newThread(t).start();
示例:
直接写一个简单的HelloWorld程序,有没有线程?
有一个主线程,在垃圾回收的时候,有gc线程。
示例:
如果把创建线程放在循环语句的上面,会交替出现吗?
分析:
可能会,可能不会,可能出现for循环完之后,线程还没有启动完;
结论:
一旦线程启动起来之后就是独立的,和创建环境没有关系;启动线程不能直接调用run方法,必须调用start方法;
2.5线程方法
了解启动线程的两种方式,继承Thread类或者实现Runnable接口,覆写里面的run方法,那除了run方法以外,还有没有其他什么方法?
Thread类的方法:
staticvoidsleep(longmillis)在指定的毫秒数内让当前正在执行的线程休眠(暂停执行);
示例:
2.6线程(sleep)应用
刚才我们已经学习了sleep方法,表示让线程休眠,里面是传入个毫秒。
那用这个方法,我们能做什么事情,可以在什么方面进行应用呢?
2.6.1简易倒计时
倒计时:
publicstaticvoidmain(String[]args){
for(inti=10;i<=0;i--){
System.out.println(i);
Thread.sleep(1000);
}
}
2.6.2窗体倒计时
窗体显示倒计时:
分析:
①需要一个JFrame,Label组件
②设置字体label.setFont(newFont(“宋体”),Font.BOLD,600);
③给Label设置值label.setText(Stringi)方法;
2.7作业
1.什么是线程,什么是进程,线程和进程的关系是什么?
2.练习两种方式创建线程;
3.完成倒计时的功能;
4.分析写出程序结果,写出分析步骤:
publicclassTest{
publicstaticvoidmain(String[]args){
try{
showExce();
System.out.println("A");
}catch(Exceptione){
System.out.println("B");
}finally{
System.out.println("C");
}
System.out.println("D");
}
publicstaticvoidshowExce()throwsException{
thrownewException();
}
}
publicclassTest{
publicstaticvoidfunc(){
try{
thrownewException();
}catch(Exceptione){
System.out.println("B");
}
}
publicstaticvoidmain(Stringargs[]){
try{
func();
}catch(Exceptione){
System.out.println("C");
}
System.out.println("D");
}
}
6.自定义一个异常,模拟用户名重复的场景,当用户名重复,产生一个重复异常;如果没有重复,则注册成功;
7.Java中final,finalize,finally关键字的区别;
8.Java中throw和throws的区别;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 线程