多线程编程
来源:互联网 发布:湖南软件职业学院图片 编辑:程序博客网 时间:2024/06/16 17:59
多线程编程(个人整理)
常用单词:thread 线程
Thrad. sleep(1000);1000表示毫秒 :当前线程休眠1000毫秒
synchronize 同步关键字 访问修饰符后面
多任务:实现方式
1.基于线程
特点:基于线程的多任务处理环境中,线程是最小的处理单位。
2.基于进程
特点:允许计算机同事运行两个或更多的程序。
进程概述:
是指一种”自包容”的运行程序,有自己独享的地址空间;即一个应用程序。
线程概述:
线程是进程内部单一的一个顺序控制流,共享内存地址空间;进程内部再分多任务,即线程。
声明一个Thread类的子类,覆盖run()方法
实现:直接new出子类对象,调用start方法即可
class mythread extends Thread{
public void run(){ /* 覆盖该方法*/ 线程的主方法(需要线程做什么事情)}
}
子线程通过主线程产生,但是子线程产生以后,在执行地位上两者一致;
实现runnable接口,重写Run方法
new出Thread对象,传入实现类对象,调用Thread对象的start()方法;
线程的声明周期
线程一共有五种状态:
新建状态:
new出Thead对象,调用Start方法
就绪状态:
执行Start方法之后,执行Run方法之前
运行状态:
执行Run方法
中断状态:执行Run方法可能出现的状态
造成中断的原因:
1.由于优先级的关系,线程没有抢到CPU被执行;(优先级最小为1,最大优先级为10级,默认为5级)this.setPriority(10);设置优先级 也就是被执行几率更高不代表一定被先执行2.使用sleep()方法使线程休眠;休眠时间结束以后重新参与CPU竞争3.阻塞(I/O事件)比如Scanner等待输入时 就是阻塞;4.wait-notify机制(线程间的通信机制)wait()5.挂起机制 调用yield()方法 线程已显示出让CPU控制权 (强制其它线程退出)
死亡状态:
清理资源,回收分配空间
线程同步
线程安全性问题:
如果多个线程访问同一资源对象,有可能会造成该资源对象数据混乱;
解决:
使用同步的方式解决;(锁机制)使用synchronized关键字(同步)1.在资源身上使用同步关键字;--同步方法public synchronized void className(){}2.资源本身身上不加锁,在线程中加锁public void run(rs){ // thread的对象名 //资源调用处加同步---同步块 synchronized(){ }}3.有可能造成死锁:
死锁:当两个线程同时访问一对相互依赖的同步资源时,会出现死锁
同步效果:线程安全了,但效率低了;
StringBuffer:线程安全,可变
StringBuilder:线程不安全,可变
使用wait-notify机制解决此问题
0 0
- 多线程编程
- 多线程编程
- 多线程编程
- 多线程编程
- 多线程编程
- 多线程编程
- 多线程编程
- 多线程编程
- 多线程编程
- 多线程编程
- 多线程编程
- 多线程编程
- 多线程编程
- 多线程编程
- 多线程编程
- 多线程编程
- 多线程编程
- 多线程编程
- uvaoj1398/ LA3950
- 通俗解释一下Spring的IOC原理
- 遗传算法
- HTML5再炎
- 【Redis】三 常用命令 与 常用配置
- 多线程编程
- 编程2
- Redis缓存与Memcached的比较
- 在Cookie被禁用的情况下使用url rewrite机制保持Session
- java 代码保留小数位方法
- android 6.0 permission exception Can only use lower 8 bits for requestCode
- 集合框架
- linux下挂载windows C、D、E盘
- Setup