![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JAVA基础
qq_32550623
这个作者很懒,什么都没留下…
展开
-
Tomcat参数调优
参数调优:原创 2020-03-29 19:28:40 · 107 阅读 · 0 评论 -
Tomcat网络处理线程模型
BIO+同步Servlet:APR+异步Servlet:NIO+异步Servlet:NIO处理流程:原创 2020-03-29 17:11:12 · 119 阅读 · 0 评论 -
JDK内置命令工具
jdk内置命令工具-javap:jps:jstat:jcmd:jinfo:jhat:jmap:jstack:jconsole:JvisualVM:原创 2020-03-29 00:35:30 · 118 阅读 · 0 评论 -
垃圾回收机制
自动垃圾收集:如何确定内存需要被回收:可达性分析算法:引用类型和可达性级别:垃圾收集算法:分代收集:垃圾收集器:原创 2020-03-26 23:12:56 · 131 阅读 · 0 评论 -
类加载机制
类生命周期:类加载器:查看类对应的加载器:package com.study.classLoader;public class ClassLoaderView { public static void main(String[] args) throws Exception { // 加载核心类库的 BootStrap ClassLoader ...原创 2020-03-22 12:28:40 · 65 阅读 · 0 评论 -
Netty线程模型
Netty简介:Netty整体结构图:Netty线程模型:EventLoopGroup初始化过程:EventLoop的启动:Bind榜单端口过程:Channel概念:原创 2020-03-22 00:05:29 · 77 阅读 · 0 评论 -
并发容器类
ConcurrentHashMap在JDK1.7与JDK1.8中数据结构不一样,JDK1.8的锁的粒度会比JDK1.7中小。ConcurrentSkipListMap跳表,原创 2020-03-01 20:19:48 · 75 阅读 · 0 评论 -
AQS抽象队列同步器详解
ReadWirteLock:AbstractQueuedSynchronizer:ReentrantReadWriteLock与ReentrantLock有太多地方相似了,用AQS模板封装大多数公共的业务逻辑。原创 2020-02-16 22:46:41 · 104 阅读 · 0 评论 -
Java内存模型详解
Java内存模型 vs JVM运行时数据区:多线程中的问题:原创 2020-02-07 23:10:06 · 57 阅读 · 0 评论 -
Lock接口及其实现
Locks包层次结构:Lock接口:总结:1.lock()最常用2.lockInterruptibly()方法一般更加昂贵,有的impl可能没有实现lockInterruptibly(),只有真的需要效应中断时才使用,使用之前看看impl对该方法的描述。Condition:ReentrantLock:重入count!=0 说明锁被占用判断owner是否时当前线程,如果不是...原创 2020-01-27 15:29:41 · 402 阅读 · 0 评论 -
JAVA锁相关
JAVA中锁的概念自旋锁:是指当一个线程在获取锁的时候,如果锁已经被其他线程获取,那么该线程将循环等待,然后不断的判断锁是否能被成功的获取,直到获取到锁才会退出循环。乐观锁:假设没有冲突,在修改数据时如果发现数据和之前获取的不一致,则读取最新数据,修改后重试修改。悲观锁:假设会发生并发冲突,同步所有对数据 的相关操作,从读数据就开始上锁。独享锁(写):给资源加上写锁,线程可以修改资...原创 2020-01-26 21:50:35 · 94 阅读 · 0 评论 -
线程安全之原子性
原子操作package ThreadDemo;public class Thread9{ volatile int i=0; public void count(){ i++; }} public void count(); descriptor: ()V flags: ACC_PUBLIC Code: ...原创 2020-01-22 01:13:03 · 106 阅读 · 1 评论 -
线程池原理
为什么要使用线程池线程是不是越多越好?1.线程在java中是一个对象,更是操作系统的资源,线程创建、销毁需要时间。如果创建时间+销毁时间?执行任务时间 就很不划算。2.java对象占用堆内存,操作系统线程占用系统内存,根据jvm规范,一个线程默认最大栈大小为1M,这个栈空间是需要从系统内存中分配的。线程过多,会消耗很多内存。3。操作系统需要频繁切换线程上下文,影响性能。线程池的推出就是为...原创 2020-01-14 23:27:36 · 93 阅读 · 0 评论 -
线程通信
通信方式要想实现多个线程之间的协同,如:线程执行先后顺序、获取某个线程执行的结果等等。涉及到线程之间互相通信,分为下面四类:1.文件共享2.网络共享3.共享变量4.jdk提供的线程协调API细分为:suspend/resume、wait/notify、park/unpark线程协作–JDK API:JDK中对于需要多线程协作完成某一任务的场景,提供了对于API支持多线程协作的经典场...原创 2020-01-13 00:30:12 · 66 阅读 · 0 评论 -
线程封闭
线程封闭概念:多线程访问共享可变数据时,涉及到线程间数据同步的问题。并不是所有时候,都要用到共享数据,所以线程封闭概念就提出来了。数据被封闭在各自的数据线程之中,就不需要同步,这种通过将数据封闭在线程中而避免使用同步的技术称之为线程封闭。线程封闭具体的实现由:ThreadLocal、局部变量ThreadLocal:ThreadLocal是Java里一种特殊的变量。它是一个线程级别的变量...原创 2020-01-08 00:37:32 · 105 阅读 · 0 评论 -
CPU缓存和内存屏障
CPU性能优化手段-缓存为了提高程序运行的性能,现代CPU在很多方面对程序进行了优化。例如:CPU高速缓存。尽可能地避免处理器访问主内存的时间开销,处理器大多会利用缓存(cache)以提高性能。多级缓存L1 Cache(一级缓存)是CPU第一层高速缓存,分为数据缓存和指令缓存。一般服务器CPU的L1缓存的容量通常在32-4096KB。L2 由于L1高速缓存容量的限制,为了提高CPU的运...原创 2020-01-07 00:16:08 · 136 阅读 · 0 评论 -
线程中止
不正确的线程中止Stop:中止线程,并且清除监控器锁的信息,但是可能导致线程安全问题,JDK不建议用。Destory:JDK未实现该方法。package ThreadDemo;public class Demo3 { public static void main(String[] args) throws InterruptedException { Thr...原创 2020-01-01 15:53:02 · 60 阅读 · 0 评论 -
线程状态
线程状态6个状态定义:Java.lang.Thread.State1.New:尚未启动的线程的线程状态。2.Runnable:可运行线程的线程状态,等待CPU的调度。3.Blocked:线程阻塞等待监视器锁定的线程状态。处于synchronized同步代码块或者方法中被阻塞。4.Waiting:等待线程的线程状态。下列不带超时的返回方式:Object.wait、Thread.join、L...原创 2019-12-30 22:12:24 · 82 阅读 · 0 评论 -
JAVA程序运行原理分析
class文件内容class文件包含JAVA程序执行的字节码;数据严格按照格式紧凑排列在class文件中的二进制流,中间无任何分隔符;文件开头有一个0xcafebabe(16进制)特殊的一个标志。class文件是复杂格式,专门给JVM读里面的内容,人类阅读可以借助工具查看。JVM运行时数据区方法区:JVM用来存储数据加载的类信息、常量、静态变量、编译后代码等数据。虚拟机规范中这是一个逻辑...原创 2019-12-29 17:21:51 · 175 阅读 · 0 评论