(一)基本概念多线程
①程序:一个指令的集合;ide
②进程:正在执行中的程序;(资源分配的单位)测试
③线程:进程中的一个执行路径。(调度和执行的单位)spa
(注:一个进程中必须存在主线程,主线程运行的代码存在main方法中)线程
(二)Thread类code
①Thread(Runnable target, String name)构造方法:分配新的 Thread 对象。对象
②currentThread方法:返回对当前正在执行的线程对象的引用。blog
③getName方法:返回该线程的名称。继承
④getState方法:返回该线程的状态。接口
返回值: NEW——新生状态; RUNNABLE——运行状态; BLOCKED——阻塞状态; WAITING——等待唤醒;
TIMED_WAITING——等待指定时间长度; TERMINATED——死亡状态。
⑤getPriority方法:返回线程的优先级。
⑥setPriority(int newPriority):更改线程的优先级(优先级设定在1~10之间,默认值为5)。
⑦isAlive方法:测试线程是否处于活动状态。
返回值:线程处于活动状态——true;不然——false。
⑧join方法:等待该线程终止(该线程强制执行,其它线程处于阻塞状态)。
⑨sleep(long millis)方法:在指定的毫秒数内让当前正在执行的线程休眠,线程处于阻塞状态。
⑩yield方法:暂停当前线程对象执行一次,该线程返回就绪状态。
(三)多线程的实现1——继承Thread类
①继承Thread类;
②重写run方法,将要执行的代码写入run方法中;
③建立线程对象,调用start方法启动线程。
public class Test { public static void main(String[] args) { MyThread mt = new MyThread(); mt.start(); for (int i = 0; i < 100; i++) { System.out.println("Main" + i); } } }
public class MyThread extends Thread{ @Override public void run() { for (int i = 0; i < 100; i++) { System.out.println("MyThread"+i); } } }
(四)多线程的实现2——实现Runnable接口
①建立Thread类,实现Runnable接口;
②实现run方法;
③建立一个实现Runnable接口的类的对象,用该对象来构造Thread对象;
④调用start方法启动线程。
public class Test { public static void main(String[] args) { MyThread02 mt = new MyThread02(); Thread th = new Thread(mt); th.start(); for (int i = 0; i < 100; i++) { System.out.println("Main" + i); } } }
public class MyThread02 implements Runnable{ @Override public void run() { for (int i = 0; i < 100; i++) { System.out.println("MyThread"+i); } } }
(五)多线程的实现3——实现Callable接口
①建立Thread类,实现Callable接口;
②建立一个实现Callable接口的类的对象
③建立一个FutureTask类的对象,用该对象来构造Thread对象;
④调用start方法启动线程。
public class Test { public static void main(String[] args) {
Callable<T> oneCallable = new SomeCallable<T>();
FutureTask<T> oneTask = new FutureTask<T>(oneCallable);
Thread oneThread = new Thread(oneTask);
oneThread.start();
}
}
public interface Callable<T> { T call() throws Exception; }
public class SomeCallable<T> extends OtherClass implements Callable<T> { @Override public T call() throws Exception { return null; } }
(六)线程的状态
①新生状态:无资源、无资格;
②就绪状态:有资格、无资源;
③运行状态:有资源、有资格;
④阻塞状态:无资格、让资源;
⑤死亡状态:线程结束。
(七)线程的运行过程
过程①:调用start方法,进入就绪状态;
过程②:CPU调度该线程,进入运行状态;
过程③:run方法执行完毕、线程被强制结束或抛出未捕获异常;
过程④:发生致使线程阻塞的事件;
过程⑤:阻塞的事件结束,从新进入就绪状态;
过程⑥:CPU片断时间到,线程未执行完毕,返回就绪状态。
———————————————————————————————————————————————————————————————————
The end @ 万有引力+
-
-
-
-
-