栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java多线程

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java多线程

简述Java内存模型

JVM可以分为线程私有区域和线程共享区域。
线程私有区域分别为:程序计数器、虚拟机栈、本地方法区。(线程私有区域的生命周期和线程相同,随线程的启动而创建,随线程的结束而销毁)
线程共享区域:Java堆、方法区。(线程共享区域随虚拟机的启动而创建,随虚拟机的关闭而销毁)
程序计数器:(线程私有的,唯一没有内存溢出问题的区域) 它是很小的一块内存空间,作为当前线程的行号指示器,用于记录当前虚拟机正在执行的线程指令地址。
虚拟机栈:(线程私有,描述Java方法的执行过程)每个方法执行的时候都会创建一个栈帧,用于存储局部变量表、操作数、动态链接和方法返回等信息,当线程请求的栈深度超过了虚拟机允许的最大深度时,就会抛出StackOverFlowError。
本地方法区:(线程私有的) 本地方区和虚拟机栈的作用类似,区别是虚拟机栈为执行Java方法服务,本地方法区为本地方法服务。
堆:(也叫运行时数据区,线程共享) 在JVM运行过程中创建的对象和产生的数据都要被存储在堆中。堆是被线程共享的内存区域,也是垃圾收集器进行垃圾回收的最主要的内存区域。
方法区:(线程共享) 存放已被加载的类信息、常量、静态变量、即时编译器编译后的代码数据。

简述原子性操作

一个操作或者多个操作,要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行,这就是原子性操作。

简述线程的可见性

可见性指当一个线程修改了共享变量时,其他线程能够立即得知修改。volatile、synchronized、final都能保证可见性。

简述有序性

虽然多线程存在并发和指令优化等操作,在本线程内观察该线程的所有执行操作是有序的。

简述Java中volatile关键字作用

1.保证变量对所有线程的可见性。当一条线程修改了变量值,新的值对于其他线程是可以立即得知的。
2.禁止指令重新排序,实现了有序性。即volatile变量不会被缓存在寄存器中或者对其他处理器不可见的地方,因此在读取volatile类型的变量时总会返回最新写入的值。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/298595.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号