Java知识点整理
captxb
这个作者很懒,什么都没留下…
展开
-
1_Java类加载机制
类的生命周期是:加载->验证->准备->解析->初始化->使用->卸载,只有在__准备__阶段和__初始化__阶段才会涉及类变量(static)的初始化和赋值,因此只针对这两个阶段进行分析类的准备阶段需要做的是__为类变量分配内存并设置默认值__,因此类变量st为null、b为0如果类变量被final修饰,编译时javac将会为value生成Co...转载 2019-02-17 17:44:37 · 90 阅读 · 0 评论 -
13_线程池的实际操作
参考 https://www.cnblogs.com/kuoAT/p/6714762.html线程池一般就是这么用的 public static void main(String[] args) { ExecutorService executorService = Executors.newFixedThreadPool(8); Future<Int...原创 2019-09-15 19:24:47 · 120 阅读 · 0 评论 -
AQS和ReentrantLock
AQS提供的几个比较关键的 public 方法有public final void acquire(int arg)底层用到了 protected boolean tryAcquire(int arg) 和 final boolean acquireQueued(final Node node, int arg) 方法public final void acquireInterr...原创 2019-08-09 18:06:12 · 304 阅读 · 0 评论 -
java nio示例
参考 https://crunchify.com/java-nio-non-blocking-io-with-server-client-example-java-nio-bytebuffer-and-channels-selector-java-nio-vs-io/NIOServer.java import java.io.IOException; import java.ne...转载 2019-06-20 18:00:03 · 134 阅读 · 0 评论 -
11_Java反射机制
Class类(1) 位于 java.lang 下(2) JavaDoc的介绍1° Class代表类的类或者接口的类(enum是一种类,注解是一种接口)2° Class类没有public构造器,所以Class类的对象实例时由JVM自动在类被加载时构造出来的3° 获取对应的Class实例的方法: 如果是对象,则可以用 对象.getClass()方法获得(getClass()方法是Obje...原创 2019-03-24 15:10:09 · 167 阅读 · 0 评论 -
5_HashMap
参考资料HashMap和Hashtable的区别HashMap和Hashtable的区别(1) HashMap非线程安全,Hashtable线程安全HashMap.java public class HashMap&lt;K,V&gt; extends AbstractMap&lt;K,V&gt; implements Map&lt;K,V&gt;, Cloneable, Se...原创 2019-03-13 20:21:44 · 148 阅读 · 0 评论 -
9_Java中两个int相除向哪个方向取整
class Solution { public static void main(String[] args) { int result = 0; result = 4/3; System.out.println("4 / 3: " + result); result = -4/-3; ...原创 2019-02-18 17:51:35 · 2650 阅读 · 0 评论 -
8_关于Callable, Future和FutureTask
耳熟能详的两种创建线程的方式是扩展Thread和实现Runnable接口但是它们有一个固有缺陷: 无法获取执行的结果为了解决这个问题, Callable诞生了Callable(1) 在java.util.concurrent包下, 是一个泛型接口 public interface Callable&lt;V&gt; { /** * Computes a ...转载 2019-02-18 17:48:22 · 118 阅读 · 0 评论 -
7_sleep和wait的比较
(1) 所有对象都自动含有单一的锁。(2) JVM负责跟踪对象被加锁的次数。如果一个对象被解锁,其计数变为0。在任务(线程)第一次给对象加锁的时候,计数变为1。每当这个相同的任务(线程)在此对象上获得锁时,计数会递增。(3) 只有首先获得锁的任务(线程)才能继续获取该对象上的多个锁。(4) 每当任务离开一个synchronized(同步)方法,计数递减,当计数为0的时候,锁被完全释放,此...转载 2019-02-18 10:30:45 · 124 阅读 · 0 评论 -
6_关于wait, notify与notifyAll
wait(1) wait是Object类的非静态方法,也就是说,所有对象实例都有wait方法(2) Object类中提供了wait的__三种__重载形式 1° public final void wait() throws InterruptedException; 2° public final native void wait(long timeout) throws Int...翻译 2019-02-18 10:14:32 · 144 阅读 · 0 评论 -
5_关于Thread的join方法
在Thread类中一共有__3种__join函数的重载形式,都是非静态函数 public final void join() throws InterruptedException; public final synchronized void join(long millis) throws InterruptedException public final synchron...原创 2019-02-18 09:21:23 · 519 阅读 · 0 评论 -
4_关于String的indexOf方法
indexOf 没有使用 KMP算法,使用的算法是先找到 目标字符串target[0]在源字符串中的位置i,然后再判断其他部分是否一致不使用KMP算法的原因可能是KMP需要额外的空间开销,并且要处理的多数字符串长度较短,没有必要使用...原创 2019-02-18 09:10:22 · 246 阅读 · 0 评论 -
3_关于java中的注解
注解是那些插入到源代码中__使用其他工具__可以对其进行处理的标签注解不会改变编译方式,无论是否包含注解,生成的虚拟机指令是相同的注解的用途包括(1) 自动生成。例如bean信息类(2) 测试、日志等代码的自动生成需要专门的__处理工具__处理注解,向相应的处理工具可以理解的代码中插入注解注解本身不干任何事情,需要工具支持才有用注解的形式:@Test(tim...转载 2019-02-18 09:09:34 · 177 阅读 · 0 评论 -
2_Java自动装箱的缓存策略
缓存策略__仅在自动装箱时使用__(例如 Integer a = 1;),使用构造器构建时无效(例如 Integer b = new Integer(1);)以Integer为例,Integer a = 1; 对应的实际过程为 Integer a = Integer.valueOf(1);查看源码可以发现调用 valueOf 函数时,首先检查Integer的私有静态类IntegerCac...转载 2019-02-18 09:07:36 · 112 阅读 · 0 评论 -
两个线程分别交替打印A、B的一种Java写法
大致思路是用条件变量作为两个线程通信的工具,然后用一个AtomicBoolean的变量作为flag保证线程间的可见性代码如下 import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.locks.Condition; import java.util.concurrent.loc...原创 2019-09-16 10:20:34 · 1365 阅读 · 0 评论