介绍 Thread 类的 核心API,在使用这些 API 的过程中,会出现一些意想不到的情况,其实这也是多线程不可预知性的一个体现,学习并掌握这些常见 case,也就掌握了多线程开发的命脉与特点。
概览:
-Thread 类与 Runnable 接口介绍
-getId()方法 线程唯一标识 ID
-currentThread()方法
-isAlive()方法
-sleep()方法
-yield()方法
-StackTraceElement[] getStackTrace()方法
-static void dumpStack()方法
-static Map<Thread, StackTraceElement[] > getAllStackTraces()方法
-设置线程优先级
-setDaemon()方法 守护线程
1. -Thread 类与 Runnable 接口介绍
Thread 类的声明结构:
public class Thread implements Runnable
构造函数:
Thread()
Thread(Runnable target)
Thread(Runnable target, String name) //分配新的 Tread 对象,并将 target 作为其运行对象,name 为其线程名称
Thread(String name)
Thread(ThreadGroup group, Runnable target)
Thread(ThreadGroup group, Runnable target, String name)
Thread(ThreadGroup group, Runnable target, String name, Long stackSize)
Thread(ThreadGroup group, String name)
实现多线程编程主要有两种方式 :一种是继承Thread 类,另一种是实现 Runnable 接口。
使用这两种方式创建线程的功能是一样的,没有本质的区别。使用继承 Thread 类创建新线程时,最大的局限是 不支持多继承。
示例1:
使用第一种方式创建一个多线程类:
public class MyThread extends Thread {
@Override
synchronized public void run() {
super.run();
System.out.println("print MyThread done .");
}
}
运行: