Android线程管理之Thread使用总结

今天先来总结一下Thread使用

Thead生命周期的几个状态

New
一旦被实例化之后就处于new状态

Runnable
调用了start函数之后就处于Runnable状态

Running
线程被cpu执行 调用run函数之后 就处于Running状态

Blocked
调用join()、sleep()、wait()使线程处于Blocked状态

Dead
线程的run()方法运行完毕或被中断或被异常退出,线程将会到达Dead状态

Thread主要函数

run() :线程运行时所执行的代码

start() :用于启动线程

sleep() : sleep(long millis)//线程休眠,交出CPU,让CPU去执行其他的任务,然后线程进入阻塞状态,sleep方法不会释放锁

yield() :使当前线程交出CPU,让CPU去执行其他的任务,但不会是线程进入阻塞状态,而是重置为就绪状态,yield方法不会释放锁

join() :join(long millis)等待线程终止,直白的说 就是发起该子线程的线程 只有等待该子线程运行结束才能继续往下运行

wait() :交出cpu,让CPU去执行其他的任务,让线程进入阻塞状态,同时也会释放锁

interrupt() :中断线程,自stop函数过时之后,我们通过interrupt方法和isInterrupted()方法来停止正在运行的线程,注意只能中断已经处于阻塞的线程

getId() : 获取当前线程的ID

getName()/setName() :获取和设置线程的名字

getPriority()/setPriority() :获取和这是线程的优先级 一般property用1-10的整数表示,默认优先级是5,优先级最高是10,优先级高的线程被执行的机率高

currentThread() :静态函数获取当前线程

实现Thread两种方式

第一种:继承Thread类

public static void main(String args[]){
        countThread = new CountThread("count thread");
        countThread.start();
    }
public static class CountThread extends Thread{
        public CountThread(String name) {
            super(name);
        }

        @Override
        public void run() {
            System.out.println(TAG + ":" + Thread.currentThread().getName());
        }
    }

第二种 :实现Runnable接口

 public static void main(String args[]){
        threadMe = new Thread(new CountRunnable());
        threadMe.start();
    }
public static class CountRunnable implements Runnable{

        @Override
        public void run() {
            System.out.println(TAG + ":" + Thread.currentThread().getName());
        }
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章