线程浅析

众所周知,android是一个多线程的操作系统。线程的处理在android的开发中有着非常重要的地位。那么本文是笔者阅读源码后的一线心得,分享出来,供大家指正。

一、什么是线程

大家对于线程这个概念都不陌生,不过真要这么直截了当的问出这个问题,恐怕没有很多人能直接的回答出来吧。

线程是一个并发的执行单元,它有自己的调用栈。调用栈里有可以被调用的方法、参数和局部变量。每一个应用启动后,都至少有一个线程(主线程)在线程组中。

二、线程的启动

两种方法:
1、继承Thread类,复写run()方法。
2、重写一个类实现runnable接口,并将其对象作为Thread的参数,传进Thread的构造方法。
不管用那种方法,都必须调用start()方法来开始新线程。

比较点ThreadRunnable
多继承单继承,有局限性可实现多继承,使用灵活,易扩展
数据每个线程使用独立数据每个线程都共享同一份数据

三、线程的优先级

每一个线程都有一个整形的priority属性。这个属性决定了系统怎么处理线程的顺序。一个新线程的固有优先级取决于开启它的线程
1.范围:
1-10
java自带优先级
MAX-PRIORITY:10
MIN-PRIORITY:1
NORM-PRIORITY:5
2.方法:
setPriority()/getPriority()

四、线程的状态

线程的状态一共有6种:
1、new: 线程已经被创建,不过没有用开启过。
2、runnable 线程运行
3、blocked 线程被阻塞,在等待线程锁
4、waiting 线程正在等待
5、time_waiting 线程在等待一个给定的时间
6、terminated 线程已经结束

五、线程调度

线程睡眠:
Thread.sleep(long millis) throws InterruptedException 方法,使线程转到阻塞状态。millis 参数设定睡眠的时间,以毫秒为单位。当睡眠结束
后,就转为就绪(Runnable)状态。
线程让步:
Thread.yield() 方法,暂停当前正在执行的线程对象,把执行机会让给相同或者更高优先级的线程。线程的执行顺序以实际的调度为准。这里并不能保证调用线程一定在让步线程之后执行。
线程加入:
Thread.join() throws InterruptedException 方法 在当前线程中调用另一个线程的 join()方法,则当前线程转入WAITING状态,直到另一个线程运行结束,当前线程再由阻塞转为就绪状态。

六、线程的结束

1.使用标志位,较为常用
2.使用sleep或者wait中的线程,使用interrupt()方法中断线程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值