美文网首页
Android线程:Thread

Android线程:Thread

作者: 等待苍老了谁_d0c7 | 来源:发表于2019-01-09 18:20 被阅读0次

说到线程,第一个想到的肯定是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中常用方法:
  • start();//启动线程
  • getId();//获得线程ID
  • getName();//获得线程名字
  • getPriority();//获得优先权
  • isAlive();//判断线程是否活动
  • isDaemon();//判断是否守护线程
  • getState();//获得线程状态
  • sleep(long mill);//休眠线程
  • join();//等待线程结束
  • yield();//放弃cpu使用权利
  • interrupt();//中断线程
  • currentThread();//获得正在执行的线程对象

相关文章

网友评论

      本文标题:Android线程:Thread

      本文链接:https://www.haomeiwen.com/subject/dfbgrqtx.html