学习目标
线程概念
线程的生命周期
线程的实现
线程的优先级
多线程的同步
线程组
线程概念
1.什么是线程:
线程就是程序中单独顺序的流控制。线程本身不能运行,它只能用于程序中。
2. 什么是多线程:
多线程则指的是在单个程序中可以同时运行多个不同的线程执行不同的任务.
当程序启动运行时,就自动产生一个线程,主方法main就在这个主线程上运行
一个进程可以包含一个或多个线程
一个程序实现多个代码同时交替运行就需要产生多个线程
CPU随机的抽出时间,让我们的程序一会做这件事情,一会做另外一件事情
3.线程的生命周期
线程的生命周期:一个线程从创建到消亡的过程。
线程的生命周期可分为四个状态:
(1).创建状态
(2).可运行状态
(3).不可运行状态
(4). 消亡状态
4.线程的实现
在Java中通过run方法为线程指明要完成的任务,有两种技术来为线程提供run方法。
(1).继承Thread类并重写run方法。
总体结构如下:
public class MyThread extends Thread {
public void run() {
… …
}
}
MyThread t = new MyThread();
t. start();
(2).通过定义实现Runnable接口的类进而实现run方法。
通过建立一个实现了Runnable接口的类,并以它作为线程的目标对象来创建一个线程。
Runnable接口:定义了一个抽象方法run()。定义如下:
public interface java.lang.Runnable{
public abstract void run();
}
实现Runnable接口的类实现run方法。
创建的总体框架如下:
.class MyRunner implements Runnable {
public void run() {
…
}
}
.MyRunner r = new MyRunner();
.Thread t = new Thread( ThreadGroup group, Runnable target, String name);
例如: Thread t = new Thread( r, “aa”);
5.多线程的同步
为什么要引入同步机制
在多线程环境中,可能会有两个甚至更多的线程试图同时访问一个有限的资源。必须对这种潜在资源冲突进行预防。
解决方法:在线程使用一个资源时为其加锁即可。访问资源的第一个线程为其加上锁以后,其他线程便不能再使用那个资源,除非被解锁。
怎样实现同步
对于访问某个关键共享资源的所有方法,都必须把它们设为synchronized
6.线程的优先级及其设置
设置优先级是为了在多线程环境中便于系统对线程的调度,优先级高的线程将优先执行。
一个线程的优先级设置遵从以下原则:
–线程创建时,子继承父的优先级
–线程创建后,可通过调用setPriority()方法改变优先级。
–线程的优先级是1-10之间的正整数。
1 - MIN_PRIORITY,
10 – MAX_PRIORITY
5- NORM_PRIORITY
7.线程组
所有线程都隶属于一个线程组。那可以是一个默认线程组,亦可是一个创建线程时明确指定的组。