并发编程
一、概述
1.进程和线程的概念
2.生命周期
3.创建线程的方法
4.为什么要考虑线程安全问题
(1)、上下文切换:每个线程的时间片到了后,进行进程的切换(java中的每条语句都会有多条字节码语句体现,所以可能执行到某一条时就换线程了)
(2)、临界资源:一段代码块中对共享资源
的多线程读写操作
(3)、竞态条件:多线程在临界区内执行,导致执行结果难以预测
5.线程安全分析(通过分析jvm中栈和堆之间的关系
)
(1)、静态常量(在日常项目中就数等同据库中的值了):是否符合临界资源(是否为共享资源、是否存在多线程对其进行读写操作)
(2)、局部变量:线程安全(原因:每一个线程都有一个独立的栈,对局部变量进行操作,不存在共享变量这个添加)【不安全情况:将局部变量暴露在外部=》子类覆盖,重写改方法=》解决:通过访问修饰符(public,private,protect,final)控制不向外暴露】
6.线程安全类
(1)、JUC包下的类,String,Integer,StringBuffer,Vector,HashTable
注:当线程安全的类组合使用时可能存在线程安全问题,例:HashTable中的set和get一起使用时会存在线程安全问题
(2)、不可变类的线程安全:String,Integer…