线程相关
线程是系统最小的执行单元,共享进程资源,在线程的交互中,线程有两个交互的状态:
- 互斥
- 同步
由run()方法执行工作的实际代码
线程方法
创建类
|
|
用于创建线程,给线程注上线程的名字
线程方法
|
|
停止线程
- 不要使用
stop()
方法停止线程 - 使用退出标志退出线程:利用while和一个flag状态变量去停止线程
- 用
isInterrupt()
方法判断线程是否停止,但是如果使用了sleep()或者join()方法那个停止的状态会被清除,并且会返回一个interruptException
实例变量的非线程安全
如果多个线程访问一个对象中的实例变量,则可能出现非线程安全
- 如果用线程访问的对象如果有多个实例变量则有可能出现交叉
- 如果只有一个变量则有可能出现覆盖
在被访问的方法前使用synchronized关键字,当线程访问该方法就会获得该对象的线程锁,别的线程是无法访问的。通过同步获得线程锁是对象的线程锁,而不是函数或者某一段代码块的。
有关线程共享资源
- 基础类型的局部变量:这种局部变量是线程安全的
- 局部的对象引用:是线程安全的
- 对象成员:对象成员存储在堆上面,两个线程同时更新一个对象的同一个成员会出现非线程安全