1,Thread
轻量级的进程,每个线程有自己独立的调用栈(对应Java中的StackTrace)。
1.1 使用线程的常见方法
(1)使用runnable
| Runnable r = new Runnable(){ public void run(){ //do something; } }; Thread t = new Thread(r); //启动新线程执行r的run方法,下面的方法将不堵塞当前程序的运行 //即r的run方法和当前主线程同时并发执行 t.start();//注意不是t.run()! |
(2)使用继承Thread
| public class MyThread extends Thread { public void run(){ //do something; } } |
| MyThread myThread = new MyThread(); myThread.start(); |
(3)采用匿名的Runnable或Thread的子类
略.
1.2 Thread 部分API概览
| 方法 | 描述与示例 |
| void start | 启动线程 |
| static Thread currentThread() | 获得当前线程 |
| StackTraceElement getStackTrace() | 获得线程当前调用栈 |
| void interrupt() | 中断线程 注意,大多数情况该方法只能做个interrupt状态设置,并不能真正中断线程, 停止线程的安全的方法是让其在run方法中退出
public MyScoreCalTask extends Thread { MyScoreCalTask t = new MyScoreCalTask(); //界面某个“停止”按钮的处理函数 |
| static boolean interrupted | 返回当前线程的interrupt状态,并将interrupt状态重置 |
| int getPriority, setPriority | 存取线程优先级,优先级越小的越有机会被cpu调度 |
| String getName, setName | 存取线程的名称,比较有利于debug |
| join | 等待线程死亡,该方法会堵塞到超过给定的时间或者对应线程死亡为止 |
| boolean setDaemon,getDaemon | 是否为守候线程的设置,JVM在主线程执行完毕后,如果其他正在执行的线程均为守候线程,则JVM直接退出,否则等这些非守候线程完毕后在退出 |
| static boolean holdsLock(Object) | 当前线程是否拥有给定对象的monitor |
| static void setDefaultUncaughtExceptionHandler | 设置当前线程缺省的“未被捕捉的异常”处理器,比如Runtime的异常并不强行要求程序处理,这种“未被捕捉的异常”的处理交给设置的处理器,否则采用系统缺省的处理器(一般简单e.printStackTrace(System.err)) |
| void sleep | 睡眠一段时间,该线程会交出cpu的执行权,但并不会释放其拥有的相关对象monitor |




