教材学习内容总结
1.进程与线程
进程(程序一次动态执行过程) | ||
区别与联系 | 线程(更小的执行单位) | |
共享操作系统的资源 | 共享进程中的某些内存单元(代码和数据) | |
更节省系统开销 |
2.java具有多线程机制,一次执行一个线程,JVM让线程轮流执行,每个线程都有机会使用CPU资源。
2.1线程状态与生命周期
新建 | Tread子类 对象;对象=new 对象();->新建状态 | Tread 对象;对象=new 对象();->新建状态 |
优点:可以在子类中增加新的成员变量,新的方法。但不能扩展其他类(java不支持多继承) | 构造方法:Tread(Runnable target(接口) 更灵活 | |
运行 | 对象.start()->JVM知道有一个新建线程在排队、 Tread子类 对象;对象.start()->调用run(){} run()方法结束前不能调用start()方法,否则异常 a.线程让出CPU使用权 b.线程使用CPU期间,执行了sleep(int millsecond)->休眠 millsecond秒之后->重新排队 c.线程使用CPU期间,执行了wait()->等待 调用notify()->重新排队 d.操作阻塞 a.执行完run() b.强制run()终止 | |
中断 | ||
死亡 |
注:在不同计算机运行或在同一台计算机反复运行的结果不尽相同,输出结果依赖当前CPU资源的使用情况。
2.2java线程优先级1-10之间,默认为5,调整优先级setPriority(int grade)
2.3目标对象与线程关系
完全解耦 | 弱解耦 |
创建目标对象的类不包括线程对象的引用 | 目标对象组合线程,即线程作为自己的成员 |
2.4线程的常用方法
start() | 启动线程:新建->排队,之后不再调用start()方法 | |
run() | Tread类 | run()功能和作用相同 |
Runnable接口 | ||
sleep(int millsecond) | 自动放弃CPU进入睡眠 | try catch()语句块中调用 |
isALive() | 线程处于新建->返回ture 线程进入死亡->返回false | |
currentThread() | Tread类中的类方法 | 返回当前正在使用CPU资源的线程 |
interrupt() | “吵醒”休眠的线程 |
注:一个已运行的线程没有进入死亡状态,不要再给线程分配实体
2.5线程同步
线程同步:若干个线程需要使用同一个sychronized(同步)修饰方法,机制:当A使用sychronized方法时,其他线程想使用这个方法就必须等待,直到线程A使用完该方法。
2.6协调同步线程
线程1 | 线程2 | |
使用同步方法用到变量2 | ||
被所有类继承且不予许重写 | wait():用在while(等待条件){}中 | 使用CPU,出现变量2 |
全部:notifyAll()->结束等待,原则:先中断先继续 某个:notify() |
2.7线程联合
线程A占有CPU,B.join():线程A在运行期间联合线程B
A中断->B执行->B执行完毕->A排队等待CPU
2.8GUI线程
AWT-EventQuecue | AWT-Windows |
GUI事件 | 将窗口或组件绘制到桌面 |
2.9计时器线程
TImer(int a,Qbject b)->创建计时器 | 自动生成计时器的监视器 a:每隔a毫秒震铃一次 b:计时器的监视器 |
actionPerformed(ActionEvent e)执行一次 | 震铃每隔a毫秒发生一次 |
setReapeats(Boolean b) ->b为false | 只震铃一次 |
setInitialDelay(int depay) | 设置首次震铃的延时 |
start()->启动线程(启动计时器) stop()->挂起线程(停止计时) restart()->恢复线程(重新启动计时器) |
2.10守护线程:不是很严格的工作
默认:非守护线程,也称用户线程
将自己设置成一个守护线程:void setDaemon(Boolean on)
一个线程必须在运行之前设置自己是否是守护线程。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
目标 | 5000行 | 20篇 | 400小时 | 会用java语言独立设计程序 |
第一周 | 13/13 | 1/1 | 5/5 | 学会使用jdk以及对java源程序语句的基本注意事项有所了解 |
第二周 | 140/143 | 1/2 | 10/15 | 学会java基本数据类型与数组和c语言/c++在表达和用法上的相同/不同之处 |
第三周 | 276/419 | 1/3 | 20/35 | java中运算符,表达式和语句的表现形式,类的声明,定义方法 |
第四周 | 600/1019 | 1/4 | 30/45 | 类和对象 |
第五周 | 150/1169 | 1/5 | 10/55 | 继承的作用,子类和父类的继承性,子类继承父类后方法的访问权限以及各种操作 |
第六周 | 100/1269 | 1/6 | 8/63 | 接口定义、使用方法和作用 |
第七周 | 100/1369 | 1/7 | 9/72 | 内部类(独有)包含匿名类和异常类(检测)的使用方法和作用 |
第八周 | 150/1869 | 1/8 | 10/82 | java常用实用类和方法 |
第九周 | 100/1969 | 1/9 | 20/102 | 组件、容器、窗口、(如何处理事件:事件源,监视器、接口) |
第十周 | 80/2049 | 1/10 | 10/112 | 输入输出流和各种流的作用、构造方法 |
第十一周 | 92/2141 | 1/11 | 7/119 | 连接数据库步骤、查询、更新、添加、删除语句 |
第十二周 | 104/2245 | 1/12 | 15/134 | 多线程的运行顺序和特点 |
参考文献
《java2实用教程(第5版)》