![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java进阶
JVM 多线程。。
vanlyy
优秀的猪猪饲养员
想要了解某个技术,请阅读一些相关文档;
想要明白某个技术,请尝试实践这些技术;
想要悟透某个技术,请尝试向他人讲解此技术。
展开
-
关于类加载机制的理解
参考https://blog.csdn.net/fgets/article/details/52934178 参考https://www.cnblogs.com/fanjie/p/6916784.html类加载机制概念Java虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的加载机制。Clas...原创 2018-07-04 10:56:37 · 313 阅读 · 0 评论 -
JAVA反射应用-泛型-通配符
参考https://blog.csdn.net/u012345683/article/details/74858471 https://www.cnblogs.com/fengmingyue/p/6087031.html https://www.cnblogs.com/lwbqqyumidi/p/3837629.html我们为什么需要泛型??1.在1.5之前是没有泛型的,而通常使用ob...原创 2018-07-07 19:24:51 · 12197 阅读 · 0 评论 -
JAVA反射学习
参考https://blog.csdn.net/xu__cg/article/details/52877573 https://blog.csdn.net/sinat_38259539/article/details/71799078反射机制是Java动态性之一,而说到动态性首先得了解动态语言。那么何为动态语言?一、动态语言动态语言,是指程序在运行时可以改变其结构:新的函数可以引进,...原创 2018-07-07 10:41:56 · 169 阅读 · 0 评论 -
乐观锁悲观锁,CAS,volatile
悲观锁假设最坏的情况,每次去读取数据都认为别人会修改数据,所以可能会产生并发,于是每次在拿数据的时候都要上锁。Java里面的同步原语synchronized关键字的实现也是悲观锁。乐观锁就是每次拿数据的时候认为不会有人来修改数据,所以不上锁,但是在更新的时候会判断此期间是否有人去修改了锁,如果并发冲突那么就重试,直到成功为止。CAS乐观锁是一种思想,而CAS是一种机制,通过CA...原创 2018-09-13 21:30:36 · 776 阅读 · 0 评论 -
关于线程池的原理
参考这篇https://blog.csdn.net/he90227/article/details/52576452,具体的源码实现太多,也容易乱,仅捋出来核心的思路在这里总结:线程池的目的我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题:如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁...原创 2018-08-24 17:46:45 · 140 阅读 · 0 评论 -
JAVA多线程之——对象锁的理解
多个对象多个锁例子: 输出 代码解释: athread.start()后,调用addI(),传入字符”a”,”a set over”后,线程a睡眠了,并未释放a的锁,bthread.start()后,可以调用addI,因为他们不是一个HasSelfPrivateNum对象,锁也不是一个锁,输出”b set over”,。。。然后a醒来继续输出。。。synchron...原创 2018-07-28 14:24:24 · 2192 阅读 · 0 评论 -
JAVA多线程——实现同步
转载(https://www.cnblogs.com/soundcode/p/6295910.html)加上了自己的补充和理解为何要使用同步?java允许多线程并发控制,当多个线程同时操作一个可共享的资源变量时(如数据的增删改查), 将会导致数据不准确,相互之间产生冲突,因此加入同步锁以避免在该线程没有完成操作之前,被其他线程的调用, 从而保证了该变量的唯一性和准确性。线程同步的方...原创 2018-07-26 17:20:33 · 11511 阅读 · 2 评论 -
java——多线程基础知识整理
概念进程与线程:一个进程包括由操作系统分配的内存空间,包含一个或多个线程。一个线程不能独立的存在,它必须是进程的一部分。一个进程一直运行,直到所有的非守护线程都结束运行后才能结束。多线程:Java 给多线程编程提供了内置的支持。 一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。多线程是多任务的一种特别的形式,但多线程使用了更小的资源开销。多...原创 2018-07-24 15:19:59 · 316 阅读 · 1 评论 -
关于多线程相关问题总结一下
进程和线程、多线程进程是程序运行的基本单位,线程是进程中的基本单位;线程共享一块内存和系统资源,线程之间切换开销相对进程较小;线程也被称为轻量级进程;各进程之间是独立的,各线程之间则不是,进程之间属于操作系统范畴多线程其实是几乎同时运行几个线程;可以将运行时间长的放在后台处理,增加程序运行速度多线程的使用继承thread类实现runnable接口(推荐)一个简单...原创 2018-09-16 11:43:51 · 169 阅读 · 0 评论 -
sychronized,reentrantlock,cas相关问题总结
sychronized使用方式总结底层通过monitor锁来实现。1.锁对象通过在实例方法中加sychronized修饰代码块中,即sychronized(this){},也是对当前对象加锁2.锁类通过对静态方法加sychronized修饰代码块中,即sychronized(this.clss){},也是对当前对象的类加锁monitor锁操作是基于操作系统的底层...原创 2018-09-14 21:57:44 · 597 阅读 · 0 评论 -
JVM内存——类加载——GC回收
JVM内存区域用自己的简单的语言来总结下JVM的内存区域 总的来说分为线程共享区和线程私有区线程共享区有两个部分1.堆:主要用来存放对象实例,也是GC管理的主要区域2.方法区:已加载类的信息,常量,静态量都存在这线程私有区1.虚拟机方法栈:用来服务于JAVA方法,存放局部变量等,存放了各种基本数据类型和对象引用2.本地方法栈:服务于Native方法3.程序计数器:...原创 2018-09-13 22:03:35 · 320 阅读 · 0 评论 -
JAVA对象的序列化和反序列化
序列化和反序列化的概念把对象转换为字节序列的过程称为对象的序列化。 把字节序列恢复为对象的过程称为对象的反序列化。对象的序列化主要有两种用途:把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中; 在很多应用中,需要对某些对象进行序列化,让它们离开内存空间,入住物理硬盘,以便长期保存。比如最常见的是Web服务器中的Session对象,当有 10万用户并发访问,就有可能出现10...原创 2018-07-24 19:31:04 · 771 阅读 · 1 评论 -
JAVA中clone方法——原型模式
转载于(https://blog.csdn.net/zhangjg_blog/article/details/18369201/),总结思考Java中对象的创建clone顾名思义就是复制, 在Java语言中, clone方法被对象调用,所以会复制对象。所谓的复制对象,首先要分配一个和源对象同样大小的空间,在这个空间中创建一个新的对象。那么在java语言中,有几种方式可以创建对象呢?使...转载 2018-07-28 18:05:58 · 215 阅读 · 0 评论 -
关于jvm的栈和帧栈理解
参考 https://blog.csdn.net/jiasanshou/article/details/7007806Java中的栈每当启用一个线程时,JVM就为他分配一个Java栈,栈是以帧为单位保存当前线程的运行状态。某个线程正在执行的方法称为当前方法,当前方法使用的栈帧称为当前帧,当前方法所属的类称为当前类,当前类的常量池称为当前常量池。当线程执行一个方法时,它会跟踪当前常量池。 ...原创 2018-07-02 20:48:37 · 2494 阅读 · 0 评论 -
关于ClassLoader知识整理
基础概念将CLASS文件加载到JVM中。但是由于JAR包很多,一次加载内存可能会崩溃,所以要动态的加载这些类。关于CLASS文件JVM虚拟机只识别class文件,所以如果你用C或者别的语言编写完成徐并编译为class文件,JVM虚拟机也可以识别 命令 javac 编译为.class java ~ 加载该类关于环境变量JAVA_HOME 只是一个JDK的目录路径...原创 2018-07-02 15:57:48 · 206 阅读 · 0 评论