3Java线程(上)剖析.ppt

3Java线程(上)剖析

LOGO LOGO LOGO Java线程(上) ID:SCSJ002-J2SE Java线程(上) 线程概述 Java线程模型 创建线程 后台线程(守护线程) 线程的join()方法 * 线程概述 多进程:在操作系统中能(同时)运行多个任务(程序) 多线程:在同一应用程序中有多个顺序流(同时)执行 * Java线程模型 虚拟的CPU,由java.lang.Thread类封装和虚拟CPU来实现。 CPU所执行的代码,传递给Thread类对象。 CPU所处理的数据,传递给Thread类对象。 代 码 数 据 虚拟CPU Thread Java线程模型 * 创建线程 通过java.lang.Thread来创建一个线程 Thread的构造器: Thread() Thread(Runnable target) Thread(Runnable target, String name) Thread(String name) Thread(ThreadGroup group, Runnable target) Thread(ThreadGroup group, Runnable target, String name) Thread(ThreadGroup group, String name) * 启动线程 每个线程都是通过某个特定Thread对象所对应的方法run( )来完成其操作的,方法run( )称为线程体。 使用start()方法,线程进入Runnable(可运行)状态,它将向线程调度器注册这个线程。 调用start()方法并不一定马上会执行这个线程,正如上面所说,它只是进入Runnable 而不是Running。 注意,不要直接在程序中调用线程的run()方法。 * 创建并启动线程例子 public class TestThread extends Thread{ public void run(){ for(int i = 0; i 100; i++) System.out.println(Count:+i); } public static void main(String[] args){ TestThread tt = new TestThread(); //注意,不要直接调用run方法 tt.start(); } } * 创建线程的另一种方式 通过实现Runnable接口并实现接口中定义的唯一方法run(),可以创建一个线程 public class TestThread implements Runnable{ public void run(){ for(int i = 0; i 100; i++) System.out.println(Count:+i); } } public static void main(String[] args){ TestThread tt = new TestThread(); Thread t = new Thread(tt); t.start(); } * 两种线程创建方式的比较 使用Runnable接口 可以将CPU,代码和数据分开,形成清晰的模型; 还可以从其他类继承; 保持程序风格的一致性。 直接继承Thread类 不能再从其他类继承; 编写简单,可以直接操纵线程,无需使用Thread.currentThread()。 * 结束线程 线程会以以下三种方式之一结束: 线程到达其 run() 方法的末尾; 线程抛出一个未捕获到的 Exception 或 Error; //下面线程何时结束? public class TestThread implements Runnable{ public void run(){ for(int i = 0; i 100; i++) System.out.println(Count:+i); } } * 后台线程 有一种线程,它是在后台运行的,它的任务是为其他的线程提供服务,这种线程被称为后台线程(Daemon Thread),又称为守护线程 public static void main(String[] args){ TestThread tt = new TestThread(); Thread t = new Thread(tt); //设置为后台线程,主线程结束,后台线程自动结束。 t.setDaemon(true); t.start(); } * 线程的join方法 Thread API 包含了等待另一个线程完成的方法:join() 方

文档评论(0)

1亿VIP精品文档

相关文档