
JAVA
wangrcheng
这个作者很懒,什么都没留下…
展开
-
Java线程之synchronized关键字
synchronized的原理在java中synchronized是用来给对象、方法、或者代码块加上同步锁的,通过synchronized可以在多线程中实现对对象、方法、或者代码块的互斥访问。 例如,现在有两个线程A和线程B,它们都会访问“对象obj的同步锁”。假设,在某一时刻,线程A获取到“obj的同步锁”并在执行一些操作; 而此时,线程B也企图获取“obj的同步锁” , 线程B会获取失...原创 2018-03-22 21:22:04 · 175 阅读 · 0 评论 -
Java泛型
介绍Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制在编译时检测参数类型是否正确。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。使用泛型的好处: 1、类型安全 2、避免了使用强制转换 在编译时有效上面提到了泛型是在编译时提供检测,通过下面代码来验证: List&l...原创 2018-04-05 22:11:56 · 164 阅读 · 0 评论 -
ArrayList源码解析
ArrayList简介ArrayList是一个容量能够增长的动态数组。它继承了AbstractList,实现了List、RandomAccess, Cloneable, java.io.Serializable。 基本的ArrayList,长于随机访问元素,但是在List中间插入和移除元素时较慢。同时,ArrayList的操作不是线程安全的!一般在单线程中才使用ArrayList,而在多线...原创 2018-03-28 22:22:28 · 532 阅读 · 0 评论 -
Java 线程基础
start()和run()的区别start() : 它的作用是启动一个新线程,新线程会执行相应的run()方法。start()不能被重复调用。 run() : run()就和普通的成员方法一样,可以被重复调用。单独调用run()的话,会在当前线程中执行run(),而并不会启动新线程!通过下面的代码就可以验证上面的结论: static class MyThread ext...原创 2018-04-16 22:27:06 · 197 阅读 · 0 评论 -
HashMap源码理解
HashMap介绍HashMap是一个散列表,它是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。HashMap 的实现不是同步的,这意味着它不是线程安全的。它的key、value都可以为null。此外,HashMap中的映射不是有序的。Has...原创 2018-03-21 21:46:50 · 248 阅读 · 0 评论 -
Java线程池基础之ThreadPoolExecutor
线程池介绍线程池就是用来装线程的池子,简直太形象了。在Java中经常接触到的是ThreadPoolExecutor,查看源码知道ThreadPoolExecutor其实继承了抽象类AbstractExecutorService,然后AbstractExecutorService又实现了ExecutorService接口,而ExecutorService又是继承了Executor接口,所以Jav...原创 2018-03-25 21:45:00 · 221 阅读 · 0 评论 -
Java传值还是传引用?
Java传值还是传引用? 先看下面的代码:public class Demo { public static class Person{ String name; } //传int类型 public static void changeValue(int a){ a = 99; } //传对象类型 ...原创 2018-03-22 21:27:40 · 2210 阅读 · 0 评论 -
Java线程优先级
线程优先级介绍关于线程的优先级先看一段Thread中源码的注释 Every thread has a priority. Threads with higher priority are executed in preference to threads with lower priority. Each thread may or may not also be marked as ...原创 2018-03-22 21:24:18 · 241 阅读 · 0 评论 -
深入理解Java内存模型和Java对象
运行时数据区域Java虚拟机在执行Java程序时会把它所管理的内存划分为多个不同的区域,这些区域的用途和生命周期都不相同。大概如下图: 分别介绍下各个数据区域存在的意义以及在JVM内存管理中承担的作用.虚拟机栈虚拟机栈是线程私有的,而且它的生命周期和线程相同.虚拟机栈是描述Java方法执行的内存模型。每个方法在执行时都会创建一个栈帧,用于存储局部变量表、操作数栈、动态链接和方法出...原创 2018-04-25 21:45:19 · 1173 阅读 · 0 评论