简介: java是一种多线程编程语言,我们可以使用java来开发多线程程序。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。 多线程程序包含两个或多个可同时运行的部分,每个部分可以同时处理不同的任务,从而能更好地利用可用资源达到充分利用 CPU 的目的。
这里定义和线程相关的另一个术语 - 进程:进程是程序的一次性执行过程,是系统运行程序的基本单位,因此进程是动态的。系统运行一个程序即是一个进程从创建,运行到消亡的过程。一个进程包含多个线程,线程不能独立存在,它必须是进程的一部分。
在java中,在我们启动main函数时其实就是启动一个JVM的进程,而main函数所在的线程就是这个进程中的一个线程,也称主线程。
线程生命周期和状态:
线程是一个动态执行的过程,它也有一个从产生到死亡的过程。
下图显示了一个线程完整的生命周期。
java在运行的生命周期中只可能处于下面6种不同状态的其中一个状态(图源《java并发编程艺术4.1.4节》)
线程优先级:每个Java线程都有一个优先级,可以帮助操作系统确定安排线程的顺序。Java线程优先级在MIN_PRIORITY(常数为1)和MAX_PRIORITY(常数为10)之间的范围内。 默认情况下,每个线程都被赋予优先级NORM_PRIORITY(常数为5)。
具有较高优先级的线程对于一个程序来说更重要,应该在低优先级线程之前分配处理器时间。 然而,线程优先级不能保证线程执行的顺序,并且依赖于平台。
通过实现Runnable接口创建一个线程:
创建一个线程,最简单的方法是创建一个实现 Runnable 接口的类。
实例:
public class RunableDemo implements Runnable{
private Thread t;
private String threadName;
public RunableDemo(String threadName) {
super();
this.threadName = threadName;
System.out.println("新建线程:"+threadName);
}
//实现由Runnable接口提供的run()方法。 该方法为线程提供了一个入口点,
//您可将把完整的业务逻辑放在此方法中。 以下是run()方法的简单语法
public void run() {
System.out.println("正在运行:"+threadName);
try {
<