多线程编程
来源:互联网 发布:网络延长器的作用 编辑:程序博客网 时间:2024/04/29 20:59
1.多任务处理有两种类型:基于进程(-独享内存地址空间);基于线程(-在进程内部共享内存地址空间)——————{1.继承Thread重写;run()方法;new出子类对象;调用start();2.实现Runnable;new出Thread对像;调用start()}。
2.进程是指一种“自包容”的运行程序,有自己的地址空间;线程是进程内部单一的一个顺序控制流
3.基于进程的特点是允许计算机同时运行两个或多个的程序
4.基于线程的多任务处理环境中,线程是最小的处理单位
线程概述
可以将在一个Java虚拟机中运行的多线程程序堪称是一个操作系统中运行的多个进程
创建和启动线程
1通过以下两种方法创建Thread对象:
-声明一个Thread类的子类,并覆盖run()方法。 class mythread extends Thread{ public void run(){/覆盖方法\} -声明一个实现Runnable接口的类,并实现run()方法 class mathread implements Runnable{ public void run(){\实现该方法}}
线程状态
1. 新建状态;{通过new出thread对象} 2. 就绪状态;{执行start方法之后,执行run方法之前} 3. 运行状态;{执行run方法} 4. 中断状态;{中断原因: 1.由于优先级关系,线程没有抢到CPU,优先级最小为1级,最大为10级,默认为5级,this.setPriority(Thread.MIN-PRIOR); 2.使用sleep()使线程休眠,sleep方法到点是让线程重新参与竞争,不是到点就能直接进去; 3.阻塞(i/o事件) 4.wait——notify机制;使线程等待 5.挂起yield(),线程已显示出让CPU控制权 } 5. 死亡状态;{run方法执行结束(清理内存,回收空间)}
线程同步
- 有时两个或多个线程可能会试图同时访问一个资源
- 在此情况下,数据可能会变得不一致
- 为了确保在任何时间点一个共享的资源只被一个线程使用,使用了“同步”
- 使用同步关键字synchronized来进行标记
线程安全性问题:
描述:多个线程访问同一资源对象,可能会造成资源对象数据混乱 解决:同步(锁)synchronized; 死锁:描述.当两个线程访问一对相互依赖的同步资源时,会出现死锁。 解决:wait——notify{代码:生产者、消费者} 效果:线程安全了,但效率低
- 在资源调用处加同步————同步块{synchronized(rs){rs.display2(threadName) }
0 0
- 多线程编程
- 多线程编程
- 多线程编程
- 多线程编程
- 多线程编程
- 多线程编程
- 多线程编程
- 多线程编程
- 多线程编程
- 多线程编程
- 多线程编程
- 多线程编程
- 多线程编程
- 多线程编程
- 多线程编程
- 多线程编程
- 多线程编程
- 多线程编程
- 1.swift_初体验
- JSON.stringify与JSON.parse
- 一些贪心算法题
- 基数排序
- <canvas>学习笔记——如何给图形填充颜色
- 多线程编程
- “库存商品”和“原材料”科目的使用区别?
- MessageDigest简介和android密码加密算法
- LeetCode 49. Group Anagrams
- Android中Parcelable接口用法
- Mybatis与Ibatis的区别
- 关于jsp、html重新加载后台html布局标签语言
- 操作TVisualFramework中指定的窗口
- UFLDL 09 自我学习 Self-Taught Learning Unsupervised Feature Learning