【Java】多线程简单了解
0.线程是操作系统的概念而不是java概念
1.线程是执行java程序代码的基本单位
2.Java线程也是Java平台的一部分
3.Java线程是运行在平台内部的,Java平台负责管理Java线程
4。当线程执行完方法后就会退出。Java平台中如果没有正在运行的线程,就代表执行完毕,Java平台也就退出了。
类比演奏会模型
·新线程的创建和启动时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内存模型的基础上
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Linux系统CentOS 7配置Spring Boot运行环境
从阿里云新买的一台Linux服务器,用来部署SpringBoot应用,由于之前一直使用Debian版本,环境配置有所不同,也较为繁琐,本文主要介绍CentOS下配置SpringBoot环境的过程 新建用户 由于新拿到的机器只有root用户,用root用户直接进行各种操作会有一定的安全问题,所以我们先创建用户。 请参考这篇文章:创建新用户 安装Oracle Java 8 Spring Boot是基于Java的框架,所以我们首先要安装Java 8。 请参考这篇文章:安装JDK 8 安装MySql5.7 既然是J2EE功能,我们必然少不了数据库,我们这里使用MySQL5.7。 请参考这篇文章:安装MySQL5.7 安装Nginx 我们需要Nginx来进行服务的(域名/IP)反向代理。 请参考这篇文章:安装Nginx 安装Spring boot工程为系统服务,服务器启动时自动启动 当我们部署Spring boot的应用时,当服务器重启后,我们需要我们的应用也跟随系统同时启动,所以我们要将我们的应用注册为一个系统服务来实现自启动。 请参考这篇文章:配置服务实现自启动 注意: 这篇文章里的Exec...
- 下一篇
京东&美团研发面经
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a724888/article/details/82702471 京东&美团研发面经 京东Java工程师 美团点评 后台开发工程师 1 京东提前批Java开发 电话面试 本来想等面完再发个面经,等了半个月了没等到。 一面: 0 自我介绍,讲一下项目中的多线程实现 1 Java的线程池的参数,拒绝策略,阻塞队列等实现和使用 2 fixethreadpool使用的是什么阻塞队列,如果使用arrayblockingqueue或者linkedblockingqueue会有什么问题。 3 ArrayList和linkedlist有什么区别,扩容呢 4 hashmap,hashtable,concurrenthashmap1.7和1.8选一个说一下。 5 jdk1.8针对hashmap使用红黑树优化目的是什么,红黑树的结构说一下。 红黑树的特性: (1)每个节点或者是黑色,或者是红色。 (2)根节点是黑色。 (3)每个叶子节点(NIL)是黑色。 [注意:这里叶子节点,是指为空(NIL或NULL...
相关文章
文章评论
共有0条评论来说两句吧...