博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Java】多线程简单了解
阅读量:7241 次
发布时间:2019-06-29

本文共 1086 字,大约阅读时间需要 3 分钟。

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内存模型的基础上

转载地址:http://vvfbm.baihongyu.com/

你可能感兴趣的文章
python-函数
查看>>
iOS的Mantle实战
查看>>
自动换行
查看>>
用例分析技术阅读笔记二
查看>>
Scrapy反爬
查看>>
(十三) 整合spring cloud云架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)
查看>>
回流焊温度
查看>>
python 3
查看>>
并行与缓存的一些理解
查看>>
ibatis 开发中的经验 (三)Struts+Spring+Ibatis 开发环境搭建
查看>>
20175313 张黎仙《Java程序设计》第十周学习总结
查看>>
Spring Boot 初学避免犯不必要的错误
查看>>
剑指offer---二叉树中和为某一值的路径
查看>>
html5 视频
查看>>
Swift中Class和Struct异同
查看>>
Docker 共有 13 个管理命令和 41 个通用命令,以下是常用 Docker 命令列表
查看>>
HDU 1874 畅通工程续【Floyd算法实现】
查看>>
【经验分享】安装VirtualBox的时候遇到的问题
查看>>
Java-日历表
查看>>
GLPaint in OpenGL ES 2.0
查看>>