您现在的位置是:首页 > 文章详情

【Java】多线程简单了解

日期:2018-09-13点击:326

0.线程是操作系统的概念而不是java概念
1.线程是执行java程序代码的基本单位
2.Java线程也是Java平台的一部分
3.Java线程是运行在平台内部的,Java平台负责管理Java线程
4。当线程执行完方法后就会退出。Java平台中如果没有正在运行的线程,就代表执行完毕,Java平台也就退出了。
image

类比演奏会模型


·新线程的创建和启动时Java代码触发的。
·Thread类的start()方法是用来启动一个线程的
·Thread类的run()方法是一个线程启动后执行的方法
·一个程序运行多个线程时,速率是随机的

【线程同步】

概念:多个线程在同时执行的时候,如何互相进行协调
在多线程环境下,保证变量是由某个线程独享的

synchronized

关键字,是方法的修饰符,被修饰的方法称之为同步方法,在一个类的实例中,每次只能有一个线程执行此类中的同步方法。

【锁】

线程同步的实现机制 类锁和对象锁
1.线程1获得某对象的对象锁
2.线程1执行了同步方法 。。。。
3.线程2发现某对象的对象锁已经被其他线程拿走了,挂起等待
4.线程1执行完毕,释放对象锁

【线程之间的通信】

1.【共享内存机制】同步-多个线程通过synchronized关键字
2.【共享内存机制】while轮询,线程A不断地改变条件,线程B则在while语句中检测条件是否成立,从而实现线程之间的通信。坏处:浪费CPU资源,还有可能造成死循环
3.【消息传递机制】wait/notify机制,未满足条件是A调用wait()放弃CPU,进入阻塞状态;满足时,B调用notify()通知A,唤醒A并进入可运行状态
4.【消息传递机制】管道通信

【线程安全简介】

一个对象是否是线程安全的取决于它是否会被多个线程访问
当多个线程访问一个类的时候,如果不用考虑这些线程在运行时环境下的调度和交替执行,并且不需要额外的同步及协调,这个类还能做出正确行为,那么称该类是线程安全的。

线程安全的类封装了任何必要的同步,因此客户不需要自己提供

无状态对象永远是线程安全的

原子性是指一个操作是不可中断的,为了保证线程安全操作必须原子地执行

【volatile】
volatile修饰的变量值直接存在main memory里面,子线程对该变量的读写直接写入main memory,而不是像其它变量一样在local thread里面产生一份copy。volatile能保证所修饰的变量对于多个线程可见性,即只要被修改,其它线程读到的一定是最新的值

关于多线程的理解最好是建立在理解Java内存模型的基础上

原文链接:https://yq.aliyun.com/articles/640134
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章