文档介绍:第九章第九章线程线程 2 掌握线程创建方式理解解线程生命周期理解线程同步本章内容 3 线程概念 Java 线程模型。 Java 线程创建方式: 通过继承 Thread 类来创建线程通过实现 Runnable 接口创建线程 Java 线程模型 Java 是纯面向对象语言, Java 的线程模型也是面向对象的。 Java 通过 Thread 类将线程所必须的功能都封装了起来。建立一个线程,必须要有一个线程执行函数, Java 中这个线程执行函数对应 Thread 类的 run 方法。 Java 线程模型通过继承 Thread 类创建线一个普通的 Java 类只要从 Thread 类继承,就可以成为一个线程类。并可通过 Thread 类的 start 方法来执行线程代码。虽然 Thread 类的子类可以直接实例化,但在子类中必须要覆盖 Thread 类的 run 方法才能真正运行线程的代码。 public class Thread1 extends Thread { public void run(){ System. out .println( this .getName()); } } Thread1 thread1 = new Thread1(); Thread1 thread2 = new Thread1(); (); //03 (); //04 Java 线程模型通过实现 Runnable 接口创建线程实现 Runnable 接口的类必须使用 Thread 类的实例才能创建线程。通过 Runnable 接口创建线程分为两步: Runnable 接口的类实例化。 Thread 对象,并将第一步实例化后的对象作为参数传入 Thread 类的构造方法。最后通过 Thread 类的 start 方法建立线程。 public class MyRunnable implements Runnable { public void run() { …….}} MyRunnable t = new MyRunnable(); Thread thread = new Thread(t1, "MyThread1"); Thread thread = new Thread(t); (); 7 线程的生命周期线程状态创建并运行线程挂起和唤醒线程终止线程 8 线程的生命周期线程状态:与人有生老病死一样,线程也同样要经历新建(就绪)、运行(活动)、挂起(阻塞)和停止(死亡)四种不同的状态。这四种状态都可以通过 Thread 类中的方法进行控制。 9 线程的生命周期创建并运行线程线程在建立后并不马上执行 run 方法中的代码,而是处于就绪状态。线程处于就绪状态时,此时可通过 Thread 类的方法来设置线程各种属性,如线程的优先级( setPriority )、线程名(setName) 和线程的类型( setDaemon )等。当调用 start 方法后,线程开始执行 run 方法中的代码。线程进入运行状态。可以通过 Thread 类的 isAlive 方法来判断线程是否处于运行状态。当线程处于运行状态时, isAlive 返回 true ,当 isAlive 返回 false 时,可能线程处于挂起状态,也可能处于停止状态。下面的示例3演示了线程的创建、运行和停止三个状态之间的切换,并输出了相应的 isAlive 返回值。 10 线程的生命周期挂起和唤醒线程一旦线程开始执行 run 方法,就会一直到这个 run 方法执行完成这个线程才退出。但在线程执行的过程中,可以通过两个方法使线程暂时停止执行。这两个方法是 suspend 和 sleep 。在使用 suspend 挂起线程后, 可以通过 resume 方法唤醒线程。而使用 sleep 使线程休眠后, 只能在设定的时间后使线程处于就绪状态