Java基础知识
文章平均质量分 87
祥先生
名师指路不如自己去悟;自己不悟神仙也难救
展开
-
Lock vs Semaphore vs Condition Variable vs Monitor(中文)
在多线程(并发)程序中,多个线程会访问同一个共享内存,为了避免产生一些奇怪的结果,这些线程应该按照合适的顺序访问共享内存,这个过程称为同步(synchronization)。仅仅保持同步还不够,为了让同步更加高效,多个线程互相之间保持交流。1.Critical Section(CS)临界区(Critical section)是程序的一段代码块,临界区不能被多个线程在同一时间访问,临界区的访问是互斥的,某一时刻最多只有一个线程能进临界区。2.LockLock提供了一种互斥的方式,Lo...原创 2020-12-28 10:14:17 · 980 阅读 · 1 评论 -
Lock vs Semaphore vs Condition Variable vs Monitor
目录1. Critical Section(CS)2. Lock3. Semaphore4. Condition variable5. Monitor6. SummaryIn mutil-threads (concurrent) programing, two or more threads have access to a shared memory, for avoiding confusing results, these threads should acces...原创 2020-12-25 17:45:15 · 242 阅读 · 0 评论 -
ThreadLocal原理的秘密
目录1. ThreadLocal描述2. 认识ThreadLocalMap3. 神奇的数字4.注意1. ThreadLocal描述ThreadLocal保证了每个线程都有自己独享的变量,不用考虑并发同步的问题。通常情况下,ThreadLocal类型的变量被建议声明为static,即使多个线程调用多次,该变量也只会初始化一次。ThreadLocal使用起来很简单、方便,但非常值得弄清ThreadLocal的实现原理。2. 认识ThreadLocalMap在ThreadLo.原创 2020-12-11 15:02:38 · 223 阅读 · 1 评论 -
The secret of ThreadLocal
ThreadLocal variable guareente each thread has own variable without thinking about synchronization. Usually threadlocal is declared static to be initialized only once whenever thread access it. We can easily use threadlocal in programm, but it is worth t原创 2020-12-11 10:42:12 · 117 阅读 · 0 评论 -
Producer-Consumer solution using wait(), notify(), park() and unpark()
1. IntroduceIn java, mutil-threads are used everywhere, applicationsnot only take advantages of mutil-threads improving efficiency, but also encounter some confusing problems especially when threads are not synchronized correctly. Fortunately, java prov.原创 2020-11-26 16:59:34 · 156 阅读 · 0 评论 -
A thread shoud not be controlled directly by other threads
目录1.Deprecated methods2.suspend() &resume()3.destroy()4.stop()1.Deprecated methodsIn mulitple-thread application, threads may communicate with each other to share(write, read or lock) common memory. But any thread usually shoudn't directly.原创 2020-11-12 17:18:12 · 92 阅读 · 0 评论 -
What is thread in java and how its methods behave
1. What is ThreadAs in oracle java specification, thread is one of two basic units of execution, the other is process. Process was present prior to thread, we can refer to one process as an application. When an application is running, the resources alloc原创 2020-11-10 17:11:29 · 105 阅读 · 0 评论 -
重识JVM(2) - JAVA内存模型
目录一、概念和误解二、疑问三、计算机的内存模型3.1. 内存顺序和程序顺序3.2. SC内存模型3.3. TSO内存模型3.4. 其他内存模型3.5.JAVA内存模型3.6. volatile实现原理一、概念和误解 java内存模型,英文全称为java memory model,简称JMM。网上大部分关于java内存模型的资料都是关于堆栈...原创 2019-12-20 15:51:45 · 282 阅读 · 0 评论 -
volatile官方文档解释
一、描述:官方文档中对volatile中描述中,写到:This means that changes to a volatile variable are always visible to other threads. What's more, it also means that when a thread reads a volatile variable, it sees not...原创 2019-10-29 18:22:25 · 401 阅读 · 0 评论 -
重识JVM(1)- 冯诺依曼体系
目录1. 引言 2. 简介3. 冯诺依曼体系4. CPU组成和工作流程 5. JVM组成和工作流程6. 总结7. 思考1. 引言 学习java这门语言,最先学到的除了一些基础的语法知识,还有关于jvm的一些东西,像堆栈、方法区、垃圾回收,站在巨人的肩膀上,我们只需要对jvm有个大概的了解就行了,可是仅靠书本和网络...原创 2019-08-08 10:59:35 · 635 阅读 · 0 评论 -
java泛型探秘(二):泛型擦除
目录一.泛型擦除是什么二. 为什么要擦除三. 擦除造成的限制1. 特殊的rawType2. 不支持原始类型3. 不能用占位符创建实例或数组4. 不能创建泛型数组一.泛型擦除是什么java泛型是编译期的泛型,不是运行时的泛型java语言是跨平台的,每个平台都有对应的JVM(java虚拟机),编写的java源码不能直接在JVM中运行,能在...原创 2019-04-19 10:49:13 · 971 阅读 · 0 评论 -
java泛型探秘(一):泛型是什么
目录一. 泛型基本概念二. java泛型是什么&为什么使用泛型三. java泛型的继承关系一. 泛型基本概念在维基百科上泛型是用这样一句话定义的:Generic programming is a style of computer programming in which algorithms are written in terms of types to...原创 2019-04-03 15:49:09 · 334 阅读 · 0 评论 -
java编译时常量-翻译
一、原文地址:http://www.zoopable.com/compile-time-constants-in-java/二、原文翻译在本教程中,我们将会基本了解java编程语言中的编译时常量。这不是编译时常量的详细教程,但是对于大部分人来说足够了。我们将会知道什么是编译时常量,还有它们怎么样特殊。首先,我们来看下编译时常量的一般规则。必须声明为fianl 必须是java...翻译 2019-01-23 16:16:31 · 509 阅读 · 1 评论 -
Nested Classes(嵌套类) - Java™ Tutorials 翻译
一、原文地址:https://docs.oracle.com/javase/tutorial/java/javaOO/nested.html二、原文翻译:1、嵌套类 java编程语言允许在另一个类内部定义一个类。这样的类被叫做嵌套类,这里举例说明:/** 外部类 **/public class OuterClass { /** 嵌套类 **/ ...翻译 2019-01-17 18:45:48 · 367 阅读 · 0 评论 -
List接口英文注释翻译
一个有序的容器(也被称为序列)。接口使用者可以精确控制列表中每个元素的插入位置。用户可以通过整数索引(列表中的位置)访问元素,还能查找列表中的元素。 不像集合,列表通常允许重复元素。更正式点的说法是,列表通常允许满足e1.equals(e2)这样的e1和e2元素对,另外如果允许空元素通常也会允许多个空元素。有人想通过当使用者尝试插入重复元素时抛出运行时异常的方式...原创 2019-01-03 17:40:08 · 581 阅读 · 0 评论 -
为什么Collection接口的remove方法参数类型是Object而不是类型参数(泛型)
在jdk1.2版本之后的Collection接口被泛型化了,add方法的参数类型为泛型,remove方法的参数类型依然为Object,既然add添加元素时严格限制类型,保证了列表元素结构不被破坏,remove删除却放宽了类型限制,有点不合常理,查阅资料,了解到这样做的原因既有逻辑上的考虑,也有技术上的妥协,可能当时没有更好的解决办法。一、从remove方法含义上看 ...原创 2018-10-30 15:22:29 · 1328 阅读 · 0 评论 -
java源码英文注释翻译和解析(基于jdk1.7)-集合篇-Iterable&Iterator(接口)
目录1.接口概述:2.源码翻译&解析:1.接口概述: Iterable:该接口只有一个方法iterator(),此方法作用是获取一组元素的迭代器。当一个类实现了该接口,可以用foreach语法糖遍历该类元素,在编译阶段foreach语法糖会转换为调用iterator()方法获取迭代器遍历元素。容器根接口Collection继承Iterable,意味着所有...原创 2018-10-19 11:34:18 · 1642 阅读 · 0 评论 -
正确使用字节流按照指定字符编码获取字符串
在实际工作中,我们经常会遇到读取文本或网络中的内容,但是由于编码格式的不统一,往往得到的结果总是一团乱码,这就需要将文本按照它原本保存的编码解析成正确的内容。下面这段代码使用了字节按照指定编码获取字符串,可能很多人也使用它,其实呢这段代码是错误的,如果使用的时候感觉一切正常的话,那只能说你运气挺好。private String inputStreamToString(InputStream i原创 2015-08-27 21:40:49 · 5996 阅读 · 2 评论