多线程儿
来源:互联网 发布:趣医网络 编辑:程序博客网 时间:2024/04/28 19:48
进程:执行中的程序,一个进程包含多个线程
进程相互独立必须开辟独立空间,线程可以共享数据
无法使用stop()来停止线程,stop()已经废弃。比较好的方法是在run()中设置判断变量(例如boolean变量)
线程的生命周期
1,创建状态:当用new操作符创建一个新线程对象的时候,是一个空线程
2,可运行状态Runnable:调用了start()方法
3,不可运行:sleep()方法【如果是同步模块,不释放同步锁头】,wait()方法,线程的输入输出阻塞
4,返回可运行:sleep方法的时间结束,notify() or notifyAll()方法,输入输出阻塞结束
5,消失:run()方法结束
线程的优先级
1到10:
可以从父类继承
可以使用setPriority()方法
多线程如果对同一对象的成员变量进行操作,会影响彼此
而反观局部变量则不会有这个问题
synchronized同步问题
多线程同时操作同一块地方,如果有读写操作,必定会出现混乱的问题,所以要在这一块地方上加上同步锁
锁头
每一个Java对象都有一个锁(lock)或者叫做监视器(monitor)
如果一个线程访问了一个对象的上锁方法,这个时候其他的线程是无法进入的,除非方法结束,或者抛出异常
这里面分为几种情况
非静态方法上锁,则锁是这个对象
如果是静态方法上锁,则这个锁是这个对象的类对象(即使很多个相同的对象,也有且只有一个类对象)
方法块上上锁,这个是比较细致的锁,可以精确的控制上锁的位置(推荐)
线程之间的通讯
wait() notify() notifyAll()这三个方法必须是在synchronized中执行
wait()方法,让本线程进入可运行状态,调用后不是立马进入,而是等同步方法快结束(try/catch)
- 多线程儿
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 搜索二叉树基本功能实现(源代码)
- delegate
- ch2:栈溢出,修改邻接变量,修改函数返回地址
- java读书笔记:List集合总结
- RPC原理及RPC实例分析
- 多线程儿
- mybatis问题锦集(一)
- jquery基础入门上篇
- 声明式事务管理
- JavaSE知识点框架图
- OpenGL ES 透视投影
- 深度学习主机环境配置: Ubuntu16.04 + GeForce GTX 1070 + CUDA8.0 + cuDNN5.1 + TensorFlow
- 关于谱能量的解释
- 【洛谷 1022】 计算器的改良