首页 > 代码库 > android分析之Thread类

android分析之Thread类

线程与线程类要区分开来。

抽象来说,线程是CPU调度的最小单位,但是线程总要执行代码,这个代码就在线程类里说明(即Thread类)。无论如何,Thread只是一个类,但其功能就是“启动一个线程,运行用户指定的Runnable”。创建一个线程有两种方式:

  1. 继承一个Thread类,实现其run()方法
  2. 直接实现Runnable,并用Runnable对象构造Thread对象

这两种方法,最后都是调用VMThread.create(this, stacksize)来真正创建一个线程,线程执行的代码在run()方法中指定,这个run()方法其实是接口Runnable的未实现的方法。

class Thread implements Runnable {//Thread也继承接口Runnable,并重写了方法run()......    public void run() {        if (target != null) {            target.run();//最终还是调用Runnable的run()方法        }    }....

  由上可见:让线程执行的代码都应该放到run()方法体中。

 

线程之间同步有:wait,notify()/notifyAll(),interrupt(),yield()(让出处理器),join()和sleep()。

    public final synchronized void join(long millis)    throws InterruptedException {        long base = System.currentTimeMillis();        long now = 0;        if (millis < 0) {            throw new IllegalArgumentException("timeout value is negative");        }        if (millis == 0) {            while (isAlive()) {                wait(0);//join实际上调用的是wait()(通过传入表示时间的参数)            }        } else {            while (isAlive()) {                long delay = millis - now;                if (delay <= 0) {                    break;                }                wait(delay);                now = System.currentTimeMillis() - base;            }        }    }

  

 

android分析之Thread类