随笔分类 - Java基础
摘要:Java内存模型(Java Memory Model,简称JMM)是围绕着在并发过程中如何处理原子性,可见性和有序性这三个特征来建立的; 其中关于JMM中的有序性这一特性的处理,在《深入理解Java虚拟机》12.3.6先行发生原则有这么一段话,如下: 从JDK 5开始,Java使用新的JSR-133
阅读全文
摘要:CountDownLatch 一组线程等待其他的线程完成工作以后在执行; await方法用来等待,countDown方法负责计数器的减一; 计数器必须大于等于0,只是等于0的时候,计数器就是零,调用await方法时不会阻塞当前线程;CountDownLatch不可能重新初始化或修改CountDown
阅读全文
摘要:如果多线程下使用这个类,不过多线程如何使用和调度这个类,这个类总是表示出正确的行为,这个类就是线程安全的;不做正确的同步,在多个线程之间共享状态的时候,就会出现线程不安全; 类的线程安全表现为: 操作的原子性 内存的可见性 栈封闭 所有的变量都是在方法内部声明的,这些变量都处于栈封闭状态; 无状态
阅读全文
摘要:CAS(Compare And Swap),比较并更新,指令级别保证这是一个原子操作,三个运算符: 一个内存地址V,一个期望值A,一个新值B;基本思路:如果地址V上的值和期望值A相等,就把新值B更新到内存,如果不是,循环(死循环,自旋)里不断的进行CAS操作; 如下图: 如果需要获取原子操作类的值并
阅读全文
摘要:等待/通知机制,是指一个线程A调用了对象O的wait方法进入等待状态,而另一个线程B调用了对象O的notify方法或notifyAll方法,线程A收到通知后从对象O的wait方法返回,进而执行后续操作; 等待/通知的相关方法是任意Java对象都具备的,因为这些方法被定义在所有对象的超类java.la
阅读全文
摘要:线程自然终止:自然执行完或抛出未处理异常 Java中有3种方法可以使正在运行的线程终止运行: 1.使用退出标志使线程正常退出; 2.使用stop()方法强行终止线程,但这个方法不推荐使用,因为stop()和suspend(),resume()一样,都是作废的方法,使用它们会发生不可预料的结果;sto
阅读全文
摘要:当使用命令:javar -jar xxxx.jar 启动应用时,报错Unable to access jarfile xxxxx.jar,这种主要是 jar 的名称或者路径有问题;
阅读全文
摘要:一.什么是反射机制 反射使用的前提条件:需要得到字节码的Class类的实例对象,字节码是代码编译后生成的.class文件,Class类用于表示.class文件(字节码); Class类的实例对象表示正在运行的 Java 应用程序中的类和接口; 注意:枚举是一种类,注解是一种接口; 反射指程序在运行状
阅读全文
摘要:方法重载: 方法重载: 定义:指在同一个类中,允许存在一个以上的同名方法,只要它们的参数列表不同即可,与修饰符和返回值类型无关; 方法重载的调用:JVM通过方法的参数列表,调用不同的方法 ; 方法重写: 方法重写: 定义:子类中出现与父类一模一样的方法时(返回值类型,方法名和参数列表都相同),会出现
阅读全文
摘要:在说ClassCastException之前,先介绍下引用类型转换; 引用类型转换分为向上转型和向下转型两种; 向上转型:多态本身是子类类型向父类类型向上转换的过程,这个过程是默认的;当父类引用指向一个子类对象时,便是向上转换; 使用格式: 向下转型:父类类型向子类类型向下转换的过程,这个过程时强制
阅读全文
摘要:注解的概念 定义:注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释; 概念描述: 注解是JDK1.5的新特性; 注解相当一种
阅读全文
摘要:在集合中,经常可看到<?>,<? extends E>,<? super E>,它们都是属于泛型; <?> 泛型通配符,任意类型,如果没有明确,那么就是Object以及任意类型的Java类; <? extends E> 向下限定,E及其子类,表示包括E在内的任何子类; <? super E> 向上限
阅读全文
摘要:在stackoverflow偶尔看到的一个关于try()...catch()的用法,通常我们使用try...catch()捕获异常的,如果遇到类似IO流的处理,要在finally部分关闭IO流,当然这个是JDK1.7之前的写法了;在JDK7优化后的try-with-resource语句,该语句确保了
阅读全文
摘要:概念 异常指的是程序在运行或编译过程中,出现的非正常的情况,最终导致JVM的非正常停止; 在Java语言中,异常本身是一个类,产生异常就是创建异常对象并抛出一个异常对象,Java虚拟机的默认处理方式是中断程序执行,并返回异常的名称,原因,以及代码的位置; 异常分类 编译时异常(Exception),
阅读全文