[java进阶]关于多线程的知识点
线程和进程的区别?
- 进程:
- 是程序得一次之星过程,是系统运行程序的基本单位,因此进程是动态的。系统运行一个程序就是从一个进程的创建开始,到进程的结束的过程。
- 在java中当我们的main函数运行时就是启动了一个JVM进程,而main函数所在的线程就是进程中的一个线程,也称为主线程。
- 线程:
- 是比进程更小得执行单位,一个进程在执行过程中可以产生很多个线程。与进程不同的是同类的多个线程共享进程的堆和方法区资源,但每个线程都有自己的程序计数器,虚拟机栈和本地方法栈。系统在产生一个线程或在各个线程间切换工作时,负担就比进程小得多,线程也被称为轻量级进程
线程和进程的关系、区别优、缺点?
- 图解进程和线程关系
- 从图上可以看出来,一个进程可以有多个线程,多线程间共享了堆和方法区(1.8后改为元空间)资源,且,每个线程都有自己的程序计数器、本地方法栈和虚拟机栈。
- 总的来说线程就是进程划分出来的更小的运行单元,线程和进程最大的区别在于:进程的运行是相对独立的,而线程的运行则无法确定,同一个进程中的线程可以互相影响。线程执行开销小,但是不利于资源的管理维护,进程则相反;
程序计数器为什么是私有的?
- 程序计数器的作用有哪些?
- 字节码解释器通过改变程序计数器来依次读取指令,从而实现代码的流程控制,如:代码的顺序执行,循环,异常处理等;
- 多线程情况,程序计数器会记录当前程序执行位置,当线程被切换回来时候延续上次的位置继续执行;
- 注意:如果线程执行的是native方法的话,程序计数器的记录值=undefined,只能记录Java代码的执行记录;
虚拟机栈和本地方法栈是私有的?
- 虚拟机栈:每个java方法在执行的时候都会创建一个栈帧用于存储局部变量表、操作数栈、常量池引用等信息,从方法的调用到执行完成,就对应着一个栈帧的入栈和出栈;
- 本地方法栈:虚拟机展示为虚拟机执行Java方法服务的,而本地反正是为虚拟机调用本地方法(native)服务的,在HotSpot虚拟机中和Java虚拟机合二为一;
所以为了保证线程中的局部变量不为其他的线程访问,本地方法栈和虚拟机栈都是私有的
简单说下堆和方法区
- 堆和方法区是线程中共享的资源,也是进程中占用的最大的一块资源,主要用于存放新创建的对象(所有的对象都是在这里分配的内存),方法区主要是用于存放已被加载的类信息、常量、静态常量、即时编译器编译后的代码等数据;
[java进阶]关于多线程的知识点的更多相关文章
- Java进阶05 多线程
链接地址:http://www.cnblogs.com/vamei/archive/2013/04/15/3000898.html 作者:Vamei 出处:http://www.cnblogs.com ...
- Java进阶之多线程
多线程 多线程(multiple thread)是计算机实现多任务并行处理的一种方式. 在单线程情况下,计算机中存在一个控制权,并按照顺序依次执行指令.单线程好像是一个只有一个队长指挥的小队,整个小队 ...
- Java进阶(三)多线程开发关键技术
原创文章,同步发自作者个人博客,转载请务必以超链接形式在文章开头处注明出处http://www.jasongj.com/java/multi_thread/. sleep和wait到底什么区别 其实这 ...
- 从ConcurrentHashMap的演进看Java多线程核心技术 Java进阶(六)
本文分析了HashMap的实现原理,以及resize可能引起死循环和Fast-fail等线程不安全行为.同时结合源码从数据结构,寻址方式,同步方式,计算size等角度分析了JDK 1.7和JDK 1. ...
- Java进阶(四十二)Java中多线程使用匿名内部类的方式进行创建3种方式
Java中多线程使用匿名内部类的方式进行创建3种方式 package cn.edu.ujn.demo; // 匿名内部类的格式: public class ThreadDemo { public st ...
- Java进阶知识点: 枚举值
Java进阶知识点1:白捡的扩展性 - 枚举值也是对象 一.背景 枚举经常被大家用来储存一组有限个数的候选常量.比如下面定义了一组常见数据库类型: public enum DatabaseType ...
- 进阶Java编程(1)多线程编程
Java多线程编程 1,进程与线程 在Java语言里面最大的特点是支持多线程的开发(也是为数不多支持多线程的编程语言Golang.Clojure方言.Elixir),所以在整个的Java技术学习里面, ...
- Java 进阶7 并行优化 JDK多任务执行框架技术
Java 进阶7 并行优化 JDK多任务执行框架技术 20131114 Java 语言本身就是支持多线程机制的,他提供了 Thread 类 Runnable 接口等简单的多线程支持工 ...
- Java后端,最全知识点
你可能有所感悟.零散的资料读了很多,但是很难有提升.到处是干货,但是并没什么用,简单来说就是缺乏系统化.另外,噪音太多,雷同的框架一大把,我不至于全都要去学了吧. 这里,根据基础.Java基础.Jav ...
随机推荐
- ASP.NET Uploadify 上传文件过大 报错(http error)借鉴,以防忘记
Uploadify上传文件原来很早之前用过,没发现什么问题.今天再使用过程中,当文件大于30M的时候就会报错404.查看错误消息提示配置最大上传太小了.需要修改. 记得原来配置上传文件大小在这里:&l ...
- 小程序开发-开发模式下关闭http域名校验
小程序开发模式去掉域名校验 我们在开发小程序的时候如果用到其他网络地址,在小程序运行时调试器会输出 : http://www.example.com 不在以下 request 合法域名列表中,请参考文 ...
- Jmeter-添加用户变量
1. 创建用户定义的变量. 2. 3. 4.输出结果:
- python sha256 键值对参数格式接口测试
# coding=utf-8 import requests import time import uuid import hashlib import hmac import random impo ...
- 15个随机图片API
15个随机图片API 妈妈再也不用担心我网站没图用了呜 请不要重复刷新此页面 ! 找了很久的说,你难道不想收藏一下吗 其中有些 API 速度并不太好,可能会拖慢贵站的速度 我也不能保证这些 API 能 ...
- oracle之数据限定与排序
数据限定与排序 6.1 简单查询语句执行顺序 from, where, group by, having, order by, select where限定from后面的表或视图,限定的选项只能是表的 ...
- .net MVC4.0项目发布到阿里云虚拟主机中遇到的问题。
正所谓学以致用,今天本来想做个bootstrap的demo发到服务器上看一下效果,结果服务器搞了半天,最终太晚了没能学到什么东西. 首先写好页面之后我做了一个MVC4.0的网站项目,然后把Bootst ...
- PyCharm2020.2.1激活方法
本人亲测有效!直接看图! 安装准备 一.百度网盘链接:https://pan.baidu.com/s/151vnrZG2V4eMPW8RYqse3w 提取码:z5k0 至于Pycharm的安装在这 ...
- firewalld 防火墙
firewalld防火墙 firewalld简述 firewalld:防火墙,其实就是一个隔离工具:工作于主机或者网络的边缘对于进出本主机或者网络的报文根据事先定义好的网络规则做匹配检测,对于能够 ...
- openstack核心组件——nova计算服务(7)
云计算openstack核心组件——nova计算服务(7) 一.nova介绍: Nova 是 OpenStack 最核心的服务,负责维护和管理云环境的计算资源.OpenStack 作为 ...