Android线程详解
来源:互联网 发布:mysql语句大全例子 编辑:程序博客网 时间:2024/06/05 00:20
线程的状态
线程有六种状态:
1. 创建:调用了new Thread(),尚未start()之前
2. 就绪:调用了start(),在内存中准备就绪,等待获取cpu
3. 运行:获取了cpu
4. 阻塞:暂时释放了cpu资源,可能释放了同步锁(sleep()释放了cpu,但是持有同步锁;wait()释放了cpu和同步锁)
5. 终止:run()代码执行完毕或程序异常退出(如手动将进程杀死)
状态之间的转换
线程的相关函数详解
wait()/wait(long)/wait(long,int):线程等待,是object的方法,在函数中调用,意为释放当前线程所持有的CPU和同步锁,进入等待状态
notify()/notifyAll():和wait()匹配使用,是object的方法,用于唤醒处于该对象监视器下的线程。notify()随机唤醒任一线程;notifyAll()唤醒该对象监视器下的所有线程。
sleep()/sleep(long)/sleep(long,int):线程休眠,属于Thread的方法。暂时释放CPU,但是会继续持有对象的同步锁。
join():等待该线程(调用了join()的线程)执行完毕,再执行当前线程(调用了Thread.join()方法所在的线程)。Thread方法,调用了wait()方法。
线程的实现方式
继承Thread
1.继承Thread
class TestThread extends Thread{ @Override public void run() { super.run(); } }
2.调用Thread.start()
TestThread testThread = new TestThread();testThread.start();
实现Runnable
1.实现runnable
class TestRunnable implements Runnable{ @Override public void run() { } }
2.调用new Thread(new Runnable()).start()
new Thread(new TestRunnable()).start();
问:start()和run()有什么区别?
start()意为启动一个线程;然后在线程中再调用run()方法。而单独调用run()方法仅是执行了一块代码块,并不能实现子线程效果。
- Android 线程详解
- Android线程详解
- Android线程----AsyncTask详解
- Android 线程池详解
- Android 线程详解
- Android 线程池详解
- Android--线程详解
- Android线程池详解
- Android线程池详解
- Android线程池详解
- Android 线程池详解
- Android应用线程详解
- Android线程详解
- Android线程详解
- Android线程池详解
- Android中线程详解
- android进程与线程详解二:线程
- android进程与线程详解二:线程
- Python函数绘图
- Java算法之排序(快速,冒泡,归并,选择)
- Java实现文件上传
- 阿里云(企业云解析DNS)让你的博客飞起来
- freemaker实现导出Excel和word
- Android线程详解
- PHP基础知识03
- easyui 通过判断修改单独行的样式
- QT应用程序分辨率自适应
- ueditor更改工具栏按钮,设置css样式,第二次无法正常加载的解决方法
- 解决ssh-connect-to-host-github-com-port-22-connection-timed-out
- hadoop-2.7.3 在windows环境下安装(无需Cygwin)
- 数据结构之哈希函数
- vue结合bootstrap表单验证 FormValidation 图片验证