多线程的实现

多线程的实现

 

 

  (一)基本概念多线程

 

  ①程序:一个指令的集合;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   万有引力+

-

-

-

-

-

相关文章
相关标签/搜索