ZhengHao Blog

大牛成长之路

Untitled

使用Dubbo服务出现java.io.IOException: invalid constant type: 18异常解决办法 1234567891011121314151617181920212223<dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</......

死锁

java多线程

死锁 什么是死锁 所谓死锁通俗一点说就是,多个线程彼此持有对方的资源而不释放,导致这些线程处于等待状态,无法执行。举一个通俗一点的例子就是,一个宝藏需要两把钥匙,同一时间正好来了两个人,他们一个人对应一把钥匙。但是双方都不等对方把钥匙交出来才打开宝藏,可是双发都不释放自己的钥匙,就这样一直等待下去。这就是死锁。 ...

synchronized

java多线程

synchronized 同步锁,它可以把任何非null的对象当作锁。它是java解决并发问题的一种手段,它保证了线程互斥的访问同步代码。 synchronized作用范围 作用于方法:锁住的是当前对象(this); 作用于静态方法:该类的字节码,是class实例 作用于代码块:锁的是调用这个代码块的对象。 作用于代码块 12345678910111213141516171819202122......

线程的五种状态

java多线程

线程的五种状态 新建 新创建一个线程对象,但是没有调用此对象的启动方法。 就绪 线程创建后,调用了start()的方法。该线程位于运行的线程池中,等待cpu调度。 运行 线程获取了cpu时间片,执行程序代码。 阻塞 线程因为某种原因放弃了对CPU的使用,暂时停止运行。 等待阻塞:运行的线程执行了wait()方法,jvm把该线程放入到等待池中。 同步阻塞:运行的线程获取同步锁的时候,若该同步锁......

创建线程的几种方式

java多线程

创建线程的几种方式 继承Thread 123456789101112131415161718192021public class Thread1 { public static void main(String args[]){ Runner xiaoMing=new Runner(); xiaoMing.setName("小明"); ......

java内存模型

java多线程

java内存模型 今天说一下java内存模型,在说java内存模型的时候,我门提一下老生常谈的并发编程,以及并发编程到底是要解决什么问题。 并发编程解决的问题主要是两个问题:线程之间通信,以及线程的同步。 线程之间的通信有两种方式:一种是共享内存,另外一种是消息传递。Java并发编程采用的就是共享内存模型。 什么是java内存模型 Java 内存模型简称JMM,它决定了一个线程对共享变......

java多线程基本概念

java多线程

进程与线程 进程:操作系统进行资源分配的基本单位。有独立的地址空间 线程:CPU调调度的基本单位,有自己的堆栈和共享变量 并行与并发 并行:在同一时间点同时执行。举个例子,你吃饭的时候,电话来了,你边吃饭边打电话就行并行操作。 并发:在同一个时间片内执行。举个例子,你吃饭的时候,电话来了,你接完电话在吃饭说明你支持并发。 同步与异步 同步:发出一个请求,需要等待返回,然后才......

对象在内存中的布局

jvm学习系列文章

对象在内存中的布局 对象的创建 对象的创建过程 > 1. new 类名 > 1. 根据new的参数在常量池中定位一个类符号引用 > 1. 如果没有找到这个符号,说明类还没有进行加载,则进行类加载 解析 初始化 > 1. 虚拟机为对象分配内存 > 1. 将分配的内存进行初始化 > 1. 调用对象的init()方法 对象分配内存 对象分配内存分为2中方式 > 1. 指针碰撞 > ......

java内存区域

jvm学习系列文章

java内存区域 程序计数器 什么是程序计数器     通俗来说,程序计数器是一块较小的内存空间,可以把它看作当前线程字节码行号指示器,它是处于线程的独占区域。     这句话是什么意思呢?我们可以用下面一个图来表示 左边方框其实就可以理解为行号,程序计数器就是记录字节码中的行号,字节码解释器......

java运行时常量池

jvm学习系列文章

java运行时常量池 public class Test { public static void main(String [] args){ String s1="abc"; String s2="abc"; String s3=new String("abc"); System.out.print......