四月二十七日java基础知识
1.多线程的主要目的是讲一个程序中的各个“程序段”并发化
2.并行执行通常表示为同一时刻有多个代码在处理器上执行
3.并发执行通常表示为在单个处理器上,同一时刻只执行一个代码,但在一个时间段内
,这些代码交替执行
4.单线程即是一个程序只有从头到尾的一条执行路径
5.多线程编程的含义就是可将一个程序分成几个可以同时并发执行的子任务
6.程序是含有指令和数据的文件,被存储在次哦按或者其他的数据存储设备,
也就是说程序是静态的代码
7.进程是程序的一次执行过程,是系统运用程序的基本单位,因此进程是动态的
8.多任务是指一个系统中可以同时运行多个进程,即有多个独立运行的任务,每一个任务
对应一个进程
9.一个 进程包含一个以上线程,一个进程中的线程只能使用该进程的资源和环境
10.线程不能独立存在,只能存在于进程中。由于同类的多个线程是共享同一块内存空间和
一组系统资源,线程也被称为负担轻的进程
11.线程和进程最大的不同是各进程是独立的,而各线程则不一定,因为同一进程的线程
极有可能互相影响
12.多任务是针对操作系统而言的,表示操作系统可以同时运行多个程序,
多线程是针对一个进程而言的,表示一个进程内部可以同时执行多个线程
13.线程的状态和生命周期:
1)新建状态(newborn):当一个Thread类和他的子类的对象被声明并创建,但还未被执行
的这段时间里,处于一种特殊的新建状态
2)就绪状态(rannable):也被称为可运行状态。处于新建状态的先陈如桂被启动后,将进入
线程队列排队等待CPU资源,此时它已具备了运行的条件,也就是处于就绪状态
3)执行状态(running):当就绪状态的线程被调用并获得CPU资源时,便进入该状态
处于执行状态的线程在下列情况下回让出CPU的控制权
1.线程执行完毕
2.有比当前线程优先级更高的线程处于就绪状态
3.线程主动休眠一段时间
4.线程在等待某一资源
4)阻塞状态(blocked):以这个正在执行的线程如果在某些特殊情况下,将让出CPU并
暂时中止自己的执行,线程处于这种不可执行的状态
下面几种情况使一个线程进入阻塞状态:
1)调用sleep()方法或yield()方法
2) 为等待一个条件变量,线程调用wait()方法
3)该线程与另外一个线程join在一起
5)消亡状态(dead):处于消亡状态的线程不具备继续执行的能力
导致线程消亡的原因:
一是正常运行的线程完成了它的全部工作,即执行完了run()方法的最后一条语句并退出
二是进程因故停止运行 ,该进程中的所有线程将被强行停止
14.线程的优先级与调度:
优先级决定了被CPU执行的优先顺序
java语言中的线程的优先级从低到高分为十级。Thread来有三个关于线程优先级的静态变量
MIN_PRIORITY、表示最小优先级,通常为1;MAX_PRIORITY表示最高优先级,通常为10
NORM _PRIORITY表示普通优先级
15.1)新建线程将继承创建它的父进程的优先级。父进程是指执行创建新线程对象语句所在的线程
,它可能是程序的主线程,也可能是某一个用户自定义的线程
2) 一般情况下,主线程具有普通优先级。
另外想改变线程的优先级,可以通过调用线程对象的setPriority()方法进行设置
16.调度:是指各个线程之间分配CPU资源
线程调度有两种模式:分时模式和抢占模式
java语言支持的就是抢占模式
17.Java的Thread线程类与Runnable接口
java中实现多线程的方法有两种:一种是继承java.lang。包中的Thread类,
另一种是呀用户在定义自己的类中实现Runnable接口
18.要在一个Thread的子类中激活线程,必须做好下列两件事
1)此类必须继承Thread类
2)线程所要执行的代码写在run()方法内
19.线程执行时,从它的run()方法开始执行。run()方法是线程执行的起点,就像main()
方法时应用程序的执行起点,init()方法是小程序的执行起点一样
20.一个类激活线程,必须使用下列语法编写:
class 类名 extends Thread //从Thread类派生子类
{
类里的成员变量;
类里的成员方法;
修饰符 run() //覆盖父类Thread里的run()方法
{
线程的代码 }
}
21.注意:run方法规定了线程要执行的任务,但一般也不是直接调用run()方法,而是通过
线程的start()方法来启动线程
总结:今天学习了多线程里面的基础概念,程序,进程,线程,多任务,多线程
并行执行,并发执行
线程的五种状态的概念,以及在什么情况下是这种状态
线程的三种优先级
调度的两种模式
实现多线程的两种方法,继承Thread类,自己类定义Runnable接口