Android线程:Thread

2019-01-09  本文已影响0人  等待苍老了谁_d0c7

说到线程,第一个想到的肯定是Thread了,而Thread是一个实现了Runnable接口的类而已。下面我们一起来看一下:

Runnable
@FunctionalInterface
public interface Runnable {
    public abstract void run();
}

Runnable是一个只有 run() 方法的接口。

Thread
Thread 构造方法

Thread 中的构造方法中,我们常用到的是前四个

  1. public Thread();
  2. public Thread(Runnable target);
  3. public Thread(String name);
  4. public Thread(Runnable target, String name);

其中,target参数表示创建线程时传递的哪个Runnable对象,那么这个线程开启后执行的就是该Runnable的run()方法。name参数可以手动来指定创建的线程的名称,如果不指定,则默认是Thread-序号的形式,具体数值由nextThreadNum()方法来计数确定。
无论我们调用的是哪个构造函数,内部最终都调用了private void init(ThreadGroup g, Runnable target, String name, long stackSize)方法。

private void init(ThreadGroup g, Runnable target, String name, long stackSize) {

        ··· 省略代码 ···

        this.target = target;  // 把传递进来的Runnable对象保存下来

        ··· 省略代码 ···

    }
public void run() {
        if (target != null) {
            target.run();  // target不为空,则调用其run()方法
        }
    }

最后我们通过Thread类中的 start() 方法来启动我们创建的线程

public synchronized void start() {

        ··· 省略代码 ···

        started = false;
        try {
            nativeCreate(this, stackSize, daemon);  // 通过本地方法完成线程的启动
            started = true;
        } finally {
           ··· 省略代码 ···
        }
    }

最终通过本地方法来完成线程的创建和启动。

private native static void nativeCreate(Thread t, long stackSize, boolean daemon);

创建线程时,我们把需要并行处理的代码放在 run() 方法中,通过 start() 方法启动线程将自动调用 run() 方法,这是由 jvm 的内存机制规定的。并且run()方法必须是public访问权限,返回值类型为void。

Thread中常用方法:
上一篇 下一篇

猜你喜欢

热点阅读