1.多线程概念
程序:计算机指令的集合,是一段静态的代码,还有指令和数据的文件。
进程:进程是程序一次动态执行的所有过程,进程包括运行中的程序和程序所使用到的内存和系统资源。
线程:线程是程序中的一个执行流,每个线程都有自己的专有寄存器,但内存单元是共享的,即不同的线程可以执行同样的函数。
并发编程:指由若干个可同时执行的程序模块组成程序的程序设计方法。这种可同时执行的程序模块就是进程。
2.为什么使用多线程
在java多线程模型中,多个线程共存于同一块内存中,且共享资源,线程之间的通信非常容易。
java程序可以并行处理,很大提高了程序的效率以及功能。
3.java线程的模型
抢占式调度模型
线程调度程序挑选线程时,将选择处于就绪状态且优先级最高的线程。
如果多个线程具有相同的优先级,它们将被轮流调度。
4.java线程优先级
优先级是从0到10的整数,并且它仅表示线程之间的相对关系;
当多个线程并行执行时,具有较高优先级的线程将获得较多的CPU时间片;
Thread类包含的常量有:
1. public static final int MAX_PRIORITY: 最大优先级,值是10。
2. public static final int MIN_PRIORITY: 最小优先级,值是1。
3. public static final int NORM_PRIORITY:缺省优先级,值是5。
5.主线程
java中建立了一个类,当运行到该类的时候,java虚拟机自动创建一个一个线程调用main函数,这就是它的主线程。
6.建立线程
当一个Thread类或其子类的对象被声明冰箱被创建时。此时它已经有了相应的内存空间和其他资源,但是并没有开始执行它内部的代码。
void run():用该方法来执行线程。
void start():开始执行run部分的代码。
static void sleep(long millis)throws InterruptedException:将可运行对象置为休眠状态,休眠时间为指定的毫秒。
7.如何知道线程是否已经结束
可以调用isAlive()这个方法来判断:isAlive方法可以返回线程的状态,若true则线程处在可运行或不可运行状态; 若false则线程处在新创建或死亡状态。
还有join()方法,它会等待线程结束。相当于下面的语句:
while(thread.isAlive()) {
try {
thread.sleep(10);
} catch (InterruptedException e) {
}
}
8.动画实现
创建多个Thread类或其子类的对象,循环开始start(),然后在run()函数中实现。