代码改变世界

随笔分类 -  Java

Java SPI机制原理和使用场景

2018-12-31 12:27 by GarfieldEr007, 851 阅读, 收藏,
摘要: SPI的全名为Service Provider Interface.这个是针对厂商或者插件的。一般来说对于未知的实现或者对扩展开放的系统,通常会把一些东西抽象出来,抽象的各个模块,往往有很多不同的实现方案,比如日志模块的方案,xml解析模块、jdbc模块的方案等。这个可以通过我们的抽象工厂方法来理解 阅读全文

Java泛型之类型擦除

2018-12-29 20:56 by GarfieldEr007, 601 阅读, 收藏,
摘要: 类型擦除 学过C++模板的,在使用Java泛型的时候,会感觉到有点不疑问,例如:(1)无法定义一个泛型数组、无法调用泛型参数对象中对应的方法(当然,通过extends关键字是可以做到,只是比较麻烦);(2)ArrayList<Integer>和ArrayList<String>在运行时的类型是相同的 阅读全文

Java并发编程:Callable、Future和FutureTask

2018-12-23 22:50 by GarfieldEr007, 170 阅读, 收藏,
摘要: 在前面的文章中我们讲述了创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口。 这2种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果。 如果需要获取执行结果,就必须通过共享变量或者使用线程通信的方式来达到效果,这样使用起来就比较麻烦。 而自从Java 1.5开 阅读全文

CountDownLatch与CyclicBarrier

2018-12-23 22:48 by GarfieldEr007, 290 阅读, 收藏,
摘要: 对于AbstractQueuedSynchronizer衍生出来的并发工具类,这一篇再介绍俩。 场景1:有4个大文件的数据需要统计,最终将所有的统计结果进行加工,得到最后的分析数据。为了加速处理过程,当然是利用多线程:开启4个线程去分别统计每个文件的数据,开启1个线程对之前4个线程的数据加工。 这里 阅读全文

彻底理解Java的feature模式

2018-12-23 22:47 by GarfieldEr007, 5755 阅读, 收藏,
摘要: 先上一个场景:假如你突然想做饭,但是没有厨具,也没有食材。网上购买厨具比较方便,食材去超市买更放心。 实现分析:在快递员送厨具的期间,我们肯定不会闲着,可以去超市买食材。所以,在主线程里面另起一个子线程去网购厨具。 但是,子线程执行的结果是要返回厨具的,而run方法是没有返回值的。所以,这才是难点, 阅读全文

浅谈Java Future接口

2018-12-23 22:46 by GarfieldEr007, 1343 阅读, 收藏,
摘要: Java项目编程中,为了充分利用计算机CPU资源,一般开启多个线程来执行异步任务。但不管是继承Thread类还是实现Runnable接口,都无法获取任务执行的结果。JDK 5中引入了Callable和Future,通过它们执行异步任务可以获取执行结果。FutureTask分析JDK 5中获取任务执行 阅读全文

Java中的Future模式原理自定义实现

2018-12-23 22:46 by GarfieldEr007, 1473 阅读, 收藏,
摘要: 摘要:Future模式类似于js中的ajax等,是一个异步获取数据的机制,这里我把自己的一些形象理解通过代码实现了一下。该机制可以形象的理解为:调用获取数据的方法,首先获得一个没有装数据的空箱子(这个箱子有获取数据和装载数据的机制),至于箱子中的数据是通过另开一个线程去获取的,隔一段时间之后,当我们 阅读全文

Future接口和Callable接口以及FeatureTask详解

2018-12-23 22:41 by GarfieldEr007, 436 阅读, 收藏,
摘要: 类继承关系 Callable接口 Callable接口中只有一个call()方法,和Runnable相比,该方法有返回值并允许抛出异常。但是这里有一个问题,进程是要通过Thread类去创建的,但是Thread的target必须是实现了Runnable接口的类对象,所以Callable对象无法直接作为 阅读全文

Java Callable接口、Runable接口、Future接口

2018-12-23 22:39 by GarfieldEr007, 384 阅读, 收藏,
摘要: 1. Callable与Runable区别 Java从发布的第一个版本开始就可以很方便地编写多线程的应用程序,并在设计中引入异步处理。Thread类、Runnable接口和Java内存管理模型使得多线程编程简单直接。 但Thread类和Runnable接口都不允许声明检查型异常,也不能定义返回值。没 阅读全文

Java Callable接口与Future接口的两种使用方式

2018-12-23 22:38 by GarfieldEr007, 817 阅读, 收藏,
摘要: Java Callable、Future的两种使用方式Callable+Futurepublic class Test { public static void main(String[] args) { ExecutorService executor = Executors.newCachedT 阅读全文

Java多线程之Callable接口与Runnable的实现以及选择

2018-12-23 22:36 by GarfieldEr007, 448 阅读, 收藏,
摘要: 通过实现Runnable接口的实现 package Thread; import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors; public class RunnableThreadDemo { 阅读全文

Java Callable使用

2018-12-23 22:35 by GarfieldEr007, 1136 阅读, 收藏,
摘要: 1. 创建线程的三种方式: 继承Thread,重写run方法 实现Runnable接口,重新run方法 实现Callable接口,重写call方法 2. Callable接口实际上是属于Executor框架中的功能类,Callable接口与Runnable接口的功能类似,但提供了比Runnable更 阅读全文

深入理解Java Callable接口

2018-12-23 22:34 by GarfieldEr007, 969 阅读, 收藏,
摘要: 概述Callable和Runnbale一样代表着任务,区别在于Callable有返回值并且可以抛出异常。其使用如下: public class CallableDemo { static class SumTask implements Callable<Long> { @Override publ 阅读全文

Java Callable和Future简述

2018-12-23 22:33 by GarfieldEr007, 410 阅读, 收藏,
摘要: 创建线程的两种方式,一种是直接继承Thread,另外一种就是实现Runnable接口。这两种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果。如果需要获取执行结果,就必须通过共享变量或者使用线程通信的方式来达到效果,这样使用起来就比较麻烦。而自从Java 1.5开始,就提供了Callable和 阅读全文

Java多线程之Callable接口的实现

2018-12-23 22:32 by GarfieldEr007, 310 阅读, 收藏,
摘要: import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.FutureTask; /* * 一、创建执行线程的方式三:实现 Cal 阅读全文

Java多线程知识-Callable和Future

2018-12-23 22:27 by GarfieldEr007, 244 阅读, 收藏,
摘要: Callable和Future出现的原因 创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口。 这2种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果。 如果需要获取执行结果,就必须通过共享变量或者使用线程通信的方式来达到效果,这样使用起来就比较麻烦。 而自从 阅读全文

Java NIO系列教程(十二) Java NIO与IO

2018-12-12 22:41 by GarfieldEr007, 197 阅读, 收藏,
摘要: 原文地址:http://tutorials.jenkov.com/java-nio/nio-vs-io.html 作者:Jakob Jenkov 译者:郭蕾 校对:方腾飞 当学习了Java NIO和IO的API后,一个问题马上涌入脑海: 我应该何时使用IO,何时使用NIO呢?在本文中,我会尽量清晰地 阅读全文

Netty精粹之JAVA NIO开发需要知道的

2018-12-12 22:40 by GarfieldEr007, 345 阅读, 收藏,
摘要: 学习Netty框架以及相关源码也有一小段时间了,恰逢今天除夕,写篇文章总结一下。Netty是个高效的JAVA NIO框架,总体框架基于异步非阻塞的设计,基于网络IO事件驱动,主要贡献在于可以让用户基于Netty提供的API快速开发高性能、高可靠性的网络应用。这篇文章主要是介绍Netty框架的基础技术 阅读全文

Java NIO 详解(一)

2018-12-12 22:39 by GarfieldEr007, 242 阅读, 收藏,
摘要: NIO即新的输入输出,这个库是在JDK1.4中才引入的。它在标准java代码中提供了高速的面向块的IO操作。1一、基本概念描述1.1 I/O简介I/O即输入输出,是计算机与外界世界的一个借口。IO操作的实际主题是操作系统。在java编程中,一般使用流的方式来处理IO,所有的IO都被视作是单个字节的移 阅读全文

Java NIO 的前生今世 之四 NIO Selector 详解

2018-12-12 22:38 by GarfieldEr007, 344 阅读, 收藏,
摘要: Selector Selector 允许一个单一的线程来操作多个 Channel. 如果我们的应用程序中使用了多个 Channel, 那么使用 Selector 很方便的实现这样的目的, 但是因为在一个线程中使用了多个 Channel, 因此也会造成了每个 Channel 传输效率的降低.使用 Se 阅读全文
上一页 1 2 3 4 5 6 7 ··· 12 下一页