java
huaxun66
这个作者很懒,什么都没留下…
展开
-
Java8新的异步编程方式CompletableFuture
Java并发编程(一)线程创建、生命周期、控制这篇文章我们提到过Future可以实现异步编程,但是Future模式有自己的缺点:Future虽然可以实现获取异步执行结果的需求,但是它没有提供通知的机制,我们无法得知Future什么时候完成。要么使用阻塞,在future.get()的地方等待future返回的结果,这时又变成同步操作。要么使用isDone()轮询地判断Future是否完成,这样...原创 2019-11-30 16:08:33 · 6571 阅读 · 0 评论 -
Java并发编程(三)Java内存模型及volatile
内存模型相关概念大家都知道,计算机在执行程序时,每条指令都是在CPU中执行的,而执行指令过程中,势必涉及到数据的读取和写入。这时就存在一个问题,由于CPU执行速度很快,而从内存读取数据和向内存写入数据的过程则慢得多(不是一个数量级),因此如果任何时候对数据的操作都要通过和内存的交互来进行,会大大降低指令执行的速度。因此在CPU里面就有了高速缓存。也就是说,当程序在运行过程中,会将运算需要的数据从主内原创 2017-09-13 14:39:47 · 832 阅读 · 1 评论 -
Java并发编程(一)线程创建、生命周期、控制
进程和线程进程是处于运行中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单元。 特征:独立性:进程是系统中独立存在的实体,拥有自己的独立资源,没一个进程拥有自己私有的地址空间。没有经过允许的情况下,一个进程是不可以访问其他进程的地址空间。动态性:进程与程序区别,一个是静态指令集合,一个是正在系统中活动的指令集合,加入了事件的概念。进程具有自己的生命周期和状态,程序没有。原创 2017-09-08 16:40:51 · 739 阅读 · 0 评论 -
Java并发编程(二)线程同步和等待唤醒机制
概述线程安全是并发编程中的重要关注点,应该注意到的是,造成线程安全问题的主要原因有两点,一是存在共享数据(也称临界资源),二是存在多条线程共同操作共享数据。 因此为了解决这个问题,我们可能需要这样一个方案,当存在多个线程操作共享数据时,需要保证同一时刻有且只有一个线程在操作共享数据,其他线程必须等到该线程处理完数据后再进行,这种方式有个名称叫互斥锁,即能达到互斥访问目的的锁。线程同步synchro原创 2017-09-12 10:38:56 · 7321 阅读 · 1 评论 -
Java Class对象与反射机制
Java Class对象RTTIRTTI(Run-Time Type Identification)运行时类型识别,其作用是在运行时识别一个对象的类型和类的信息。这里分两种:传统的”RRTI” — 它假定我们在编译期已知道了所有类型(在没有反射机制创建和使用类对象时,一般都是编译期已确定其类型,如new对象时该类必须已定义好)反射机制 — 它允许我们在运行时发现和使用类型的信息在原创 2017-09-15 14:58:28 · 964 阅读 · 0 评论 -
详解Android注解 Annotation
概念及作用概念注解即元数据,就是源代码的元数据注解为在代码中添加信息提供了一种形式化的方法,可以在后续中更方便的 使用这些数据Annotation是一种应用于类、方法、参数、变量、构造器及包声明中的特殊修饰符。它是一种由JSR-175标准选择用来描述元数据的一种工具。作用生成文档跟踪代码依赖性,实现替代配置文件功能,减少配置。如一些注解在编译时进行格式检查,如@Override等每当你原创 2017-08-23 15:55:07 · 2288 阅读 · 1 评论 -
Java并发编程(四)未处理异常、线程池和ThreadLocal类
未处理异常以我们通常的经验,如果线程执行过程中抛出了未处理异常(没有用try-catch),那么我们的APP就会崩溃,并且我们可以从Error Log中看到出错的异常堆栈信息。那么我们有没有方法,在异常抛出之前对该异常进行处理呢?Thread.UncaughtExceptionHandler是Thread类的一个静态内部接口,该接口只有一个方法:void uncaughtException(Thre原创 2017-10-25 10:34:45 · 2436 阅读 · 0 评论