一、基本概念
- 程序是一段静态的代码,它是应用程序执行的蓝本。
- 进程是程序的一次动态执行,它对应了从代码加载、执行至执行完毕的一个完整过程。
- 操作系统为每个进程分配一段独立的内存空间和系统资源,包括:代码数据以及堆栈等资源。每一个进程的内部数据和状态都是完全独立的。
- 多任务操作系统中,进程切换对CPU资源消耗较大。
- 多线程是进程执行过程中产生的多条执行线索。
- 线程是比进程执行更小的单位。
- 线程不能独立存在,必须存在于进程中,同一进程的各线程间共享进程空间的数据。
- 每个线程有它自身的产生、存在和消亡的过程,是一个动态的概念。
- 多线程意味着一个程序的多行语句可以看上去几乎在同一时间内同时运行。
- 线程创建、销毁和切换的负荷远小于进程,又称为轻量级进程(lightweight process)。
二、线程的中断
- 当线程的run方法执行方法体中最后一条语句后,并经由执行return语句返回时,或者出现了在方法中没有捕获的异常时,线程将终止,让出CPU使用权。
- 调用interrupt()方法也可终止线程。interrupt()方法不仅可中断正在运行的线程,而且也能中断处于blocked状态的线程,此时interrupt()方法会抛出一个InterruptedException异常。
- Java提供了几个用于测试线程是否被中断的方法。
三、线程的状态
- 通过各线程的状态变换,可以控制各个线程轮流使用CPU,体现多线程的并行性特征。
- 线程一共有如下6种状态:
- New (新建)
- Runnable (可运行)
- Blocked (被阻塞)
- Waiting (等待)
- Timed waiting (计时等待)
- Terminated (被终止)
四、面向对象程序设计课程学习进度条
周次 | (阅读/编写)代码的行数 | 发布博客量/评论博客数量 | 课堂/课余学习时间(小时) | 最满意的编程任务 |
第一周 | 20/7 | 1/1 | 6/4 | 编写Hello world程序 |
第二周 | 38/20 | 1/1 | 6/5 | 实验二 任务三 |
第三周 | 50/30 | 1/1 | 6/7 | 实验三 |
第四周 | 58/46 | 1/1 | 6/5 | 编写输出N位数各位数字,及求和 |
第五周 | 67/53 | 1/1 | 6/6 | 类的定义与重载 |
第六周 | 71/60 | 1/1 | 6/4 | 接口 |
第八周 | 80/66 | 1/1 | 6/3 | Lamdba表达式 |
第九周 | 85/60 | 1/1 | 6/2 | ID的操作 |
第十周 | 121/80 | 1/1 | 6/2 | 实验九 |
第十一周 | 120/84 | 1/1 | 6/2 | 实验十 |
第十二周 | 131/90 | 1/1 | 6/2 | 实验十一 |
第十三周 | 130/100 | 1/1 | 6/2 | 实验十二 |
第十四周 | 120/90 | 1/1 | 6/2 | 实验十三 |
第十五周 | 124/90 | 1/1 | 6/2 | 实验十四 |
第十六周 | 130/80 | 1/1 | 6/2 | 实验十四 |
第十七周 | 130/90 | 1/ | 6/2 | 并发 |
...... | ||||
累计 | 1545/959 | 17/16 | 96/52 |