Java
chwnpp2
这个作者很懒,什么都没留下…
展开
-
也来分析下Java 线程池(ThreadPoolExecutor)的原理
先提几个问题: 1.线程池的工作原理是啥? 2.核心线程池是一开始时就创建够吗?空闲时核心线程池也一直维持不变吗? 3.线程池是如何被停止的?如果你都能非常自信地回答出来,那后面的内容可以不用看了。参考文章: 《Java 线程池(ThreadPoolExecutor)原理分析与使用》一、线程池的使用1.创建线程池:通过new创建,构造函数为: public ThreadPoolExecut原创 2017-10-19 20:34:08 · 456 阅读 · 0 评论 -
[笔记]对于关键字volatile的理解
关键字volatile可以说是Java虚拟机提供的最轻量级的同步机制。 在《深入理解Java虚拟机》第2版(周志明著)一书中,作者认为volatile有两个语义/特性: 一是:保证此变量对于所有线程的可见性; 二是:禁止指令重排序优化。 下面将分别来解读。 这里的大背景是Java内存模型。 “内存模型”可以理解为在特定的操作协议下,对特定的内存或高速缓存进行读写访问的过程抽象。不同架构的原创 2017-03-17 16:31:28 · 338 阅读 · 0 评论 -
[笔记]Java语言的“重载”和“重写”
在《深入理解Java虚拟机》第2版(周志明著)一书中,作者总结到: 今天(直至还未发布的Java1.8)的Java语言是一门静态多分派、动态单分派的语言。这里主要有4个概念: Java语言层面:重载、重写; 虚拟机层面:静态分派、动态分派 预先说说前置概念:Human man = new Man();语句中,“Human”是变量man的静态类型(Static Type),或者叫做外观类型原创 2017-03-17 13:38:10 · 392 阅读 · 0 评论 -
[笔记]Java虚拟机垃圾回收的原理是“引用计数”吗?
迷茫时,能遇见一本好书,并且能够静下心把它读完,那真的是一件愉快和值得纪念的事。 2017年2月7日-2017年3月16日,读完《深入理解Java虚拟机》第2版(周志明著)。接下来这几篇,我将会把印象深刻的几个知识点总结下来,权当用做日后复习。 看这本书之前,每当提到虚拟机的垃圾回收,我能说的应该就是这么一句:是通过引用计数来实现的,当一个对象的引用计数为0时,虚拟机就会将之回收。原创 2017-03-16 16:32:53 · 1563 阅读 · 0 评论 -
[Java基础]ArrayList的contains方法,你用对了吗?
最近在代码Review中发现,有同学错用了数组的contains方法。示例如下:public class ListItem { private int id; private String name; public ListItem(int id, String name) { this.id = id; this.name =...原创 2018-03-22 17:22:47 · 52487 阅读 · 3 评论 -
[Java基础]关于String的一些基础
参考: 1.几张图轻松理解String.intern() 2.Java技术——你真的了解String类的intern()方法吗关于String,会有这么几个经常提起的概念:==关系符,+号、new、intern,final,字面量、static,方法参数。 String是一种特殊的Java对象。注意,它归根结底还是一种对象。 首先要知道: new的含义是:在堆上创建一个新对象。 使...原创 2018-03-22 20:40:21 · 253 阅读 · 0 评论 -
Java 下载解析Excel文件 报错:jxl.read.biff.BiffException: Unable to recognize OLE stream
项目开发需要先下载excel文件,然后解析出内容,最后将内容分批次下发给APP端。 在创建Excel的解析实例Workbook时,发现构造函数的入参是InputStream,心中窃喜。public static Workbook getWorkbook(InputStream is)随即就将从HttpURLConnection处得到的InputStream内存流传给了Workbook...原创 2018-03-13 12:20:16 · 2504 阅读 · 0 评论