粗略讲线程
来源:互联网 发布:香港底层 知乎 编辑:程序博客网 时间:2024/05/18 02:52
线程
一个进程就是一个独立应用程序,独占内存地址空间,多任务不是绝对意义的同时而是cpu在进程间来回切换
线程:线程是进程内部的一个独立的运行流程,同进程的线程共享内存地址空间,多线程也是cpu在线程来回切换,比进程切换效率高
1. 多线程
l 继承 extends Thread重写run方法,run方法相当于子线程的main方法
n 在main方法中调用子线程的start方法开启线程,不能调用run方法,调用run方法虽然不报错 但是相当于没有开启新线程只是普通的方法调用
l 继承 implements Runnable重写run方法
n 同样不能调用run方法,将接口对象放入thread ThreadBtb = new ThreadB(); thread th = new Thread(tb);,调用start方法
2. 线程五种状态
l 通过New的方式产生一个新建状态
l 就绪状态(start启动,运行run方法之前)
l 运行状态(run方法执行期间)
l 死亡状态(run方法执行完毕)
l 中断状态
n 中断状态,由于优先级的原因,没有抢到cpu,也没有执行完毕
可以设置优先级,一共10级,最小为1,最大为10,默认为5
可设置this.setPriority(级别),优先级高并不一定会先执行,只是被cpu青睐的几率更高
n 阻塞,线程由于等待一个I/O操作时被堵塞
n 休眠,调用thread.sleep(毫秒数)可以休眠,醒来后并不是立即被执行,只是参与cpu抢夺
n 等待、唤醒,notify 第一个调用wait方法将会被唤醒 notifyAll 所有调用wait方法将会被唤醒,wait
n 挂起---------yield( ),很少使用
3. 线程安全性
l 当多个线程访问同一资源时,才会考虑线程安全性问题,安全性问题解决方案:加同步锁 synchronized
在资源方法修饰符后添加——方法同步锁
Synchronize(this.rs){书写多个被同步的方法}——同步块
l 死锁 当两个或多个线程同步访问一对循环依赖的资源的时候可能会会发生死锁现象,线程间通信——wait,notify
只能写在同步方法或同步块中,很难模拟。
- 粗略讲线程
- 粗略讲反射
- 线程小讲
- Android高级开发第八讲--粗略讲述Java之软引用、弱引用和虚引用
- 第三讲:进程线程模型
- 第三讲:线程和线程池
- 第四十四讲 线程池 (最后一讲)
- 粗略估算
- 粗略估算
- JavaSE第九十七讲:线程与进程
- 第八讲 MFC的进程和线程
- 第四十讲 感性的认识线程
- mfc孙鑫第十六讲线程同步
- JAVA线程堆栈问题定位第一讲
- java线程堆栈问题定位第三讲
- 线程池原理(讲的非常棒)
- 韩顺平 java 第38讲 线程
- 韩顺平 java 第39讲 线程
- 粗略讲反射
- dd和cp命令差异
- handler内存泄露问题
- 常见对象_JDK5的新特性自动装箱和拆箱
- leetcode(39).155. Min Stack
- 粗略讲线程
- Spark RDD操作函数说明
- MYSQL——DML : 数据操作语句 (insert update delete)
- yii 2.0 配置数据库(三)
- Add Two Numbers II ---LeetCode
- hive OVER(PARTITION BY)函数用法
- elasticsearch head插件安装
- http简单记录
- 学习c++的几点随记