自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 收藏
  • 关注

原创 java并发编程学习13--Atomic数据结构简介

【介绍 JAVA 中无锁的线程安全整数 AtomicInteger,一个提供原子操作的Integer的类。在Java语言中,++i和i++操作并不是线程安全的,在使用的时候, 不可避免的会用到synchronized关键字。而AtomicInteger则通过一种线程安全的加减操作接口。AtomicInteger为什么能够达到多而不乱,处理高并发应付自如呢? 这是由硬件提供

2017-12-09 15:51:14 280

原创 java并发编程学习12--并发数据结构简介

【并发数据结构存在的理由:   串行数据结构在并发环境下是不安全的,而直接使用锁又会带来性能的影响,所以jdk专门设计了针对并发环境下的数据结构,其中使用了无锁运算来保证性能。   【并发List   1.可以直接使用Collections.synchronizedList()将一个非线程安全的list变成支持同步的list.但是这样做有一个问题,就是所有的操作都会被加上锁,我们知道如

2017-11-19 12:52:37 249

原创 java并发编程学习11--线程池

【线程池     为了节省系统在多线程并发时不断创建和销毁线程带来的额外开销,就需要引入线程池。线程池的基本功能就是进行线程的复用。当系统接受一     个提交的任务时,并不会着急去创建一个新的线程去执行这个任务,而是去线程池中查询是否有空闲的线程。     若有:直接使用这个线程。     若没有:根据配置的策略执行(有可能时创建一个新的线程,也有可能是阻塞该任务等待空闲线程)。

2017-11-01 14:39:30 210

原创 java并发编程学习10--同步器--栅栏

【同步器 java.util.concurrent包包含几个能帮助人们管理相互合作的线程集的类。这些机制具有为线程直间的共用集结点模式提供的‘预制功能’。 如果有一个相互合作的线程满足这些行为模式之一,那么应该直接使用提供的类库而不是显示的使用锁与条件的集合。 【栅栏 CyclicBarrier类实现了一个集结点(rendezvous)称为栅栏(barrier)。考虑大量

2017-10-05 14:45:58 378

原创 java并发编程学习9--同步器--倒计时门栓

【同步器 java.util.concurrent包包含几个能帮助人们管理相互合作的线程集的类。这些机制具有为线程直间的共用集结点模式提供的‘预制功能’。 如果有一个相互合作的线程满足这些行为模式之一,那么应该直接使用提供的类库而不是显示的使用锁与条件的集合。 【倒计时门栓 一个倒计时门栓(CountDownlatch)让一个线程集直到计数变为0.倒计时门栓是一次性的,一

2017-09-24 16:30:18 457

原创 java并发编程学习8--同步器--信号量

【同步器 java.util.concurrent包包含几个能帮助人们管理相互合作的线程集的类。这些机制具有为线程直间的共用集结点模式提供的‘预制功能’。 如果有一个相互合作的线程满足这些行为模式之一,那么应该直接使用提供的类库而不是显示的使用锁与条件的集合。 【信号量 一个信号量管理过个许可证。为了通过信号量,线程通过调用acquire()请求许可。其实没有实际

2017-09-17 20:12:27 303

原创 java并发编程学习7--同步--ReentrantLock

【条件竞争: 在多线程的开发中,两个及其以上的线程需要共享统一数据的存取。如果两个线程存取相同的对象,并且每一个线程都调用一个修改该对象状态的方法, 根据线程访问数据的顺序,可能会出现错误的数据结果,这种现象成为条件竞争。因为修改对象状态的方法并不是一个原子操作,通常步骤是: 1.读取当前状态值到线程工作内存。 2.在线程工作内存中修改状态值。 3.将修改后

2017-09-10 15:27:29 252

原创 java并发编程学习6--同步--synchronized关键字

【条件竞争: 在多线程的开发中,两个及其以上的线程需要共享统一数据的存取。如果两个线程存取相同的对象,并且每一个线程都调用一个修改该对象状态的方法, 根据线程访问数据的顺序,可能会出现错误的数据结果,这种现象成为条件竞争。因为修改对象状态的方法并不是一个原子操作,通常步骤是: 1.读取当前状态值到线程工作内存。 2.在线程工作内存中修改状态值。 3.将修改后

2017-09-03 20:33:37 167

原创 java并发编程学习5--并行流

【概念 并行流就是一个把内容分成多个数据块,并用不同的线程分别处理每一个数据块的流。 在java7之前,并行处理数据很麻烦,第一,需要明确的把包含数据的数据结构分成若干子部分。第二,给每一个子部分分配一个独立的线程。第三, 适当的时候进行同步,避免出现数据竞争带来的问题,最后将每一个子部分的结果合并。在java7中引入了forkjoin框架来完成这些步骤,而java8

2017-08-27 15:12:01 218

原创 java并发编程学习4--forkJoin

【概念 分支和并框架的目的是以递归的方式将可以并行的任务拆分成更小的任务,然后将每个子任务的结果合并起来生成整体的结果,它是ExecutorService的一个实现, 它把子任务分配给线程池(ForkJoinPool)中的工作线程。 某些应用可能对每个处理器内核饭别试用一个线程,来完成计算密集任务,例如图像处理。java7引入forkjoin框架,专门用来支持这一类应用。

2017-08-19 16:20:39 220

原创 java并发编程学习3--线程通信练习

【问题的描述: 启动3个线程打印递增的数字, 线程1先打印1,2,3,4,5, 然后是线程2打印6,7,8,9,10, 然后是线程3打印11,12,13,14,15. 接着再由线程1打印16,17,18,19,20....以此类推, 直到打印到75. 程序的输出结果应该为: 线程1: 1 线程1: 2 线程1: 3 线程1: 4 线程1: 5 线程2: 6 线程2: 7 线

2017-08-12 15:05:59 340

原创 java并发编程学习2--Future

【Future的概念: interface Future ,表示异步计算的结果,Future有个get方法而获取结果只有在计算完成时获取,否则会一直阻塞直到任务转入完成状态,然后会返回结果或者抛出异常。 相对于继承Thread来创建线程方式,使用Runnable可以让你的实现类同时实现多个接口,而相对于Callable及Future,Runnable方法并不返回任务执行结果且不能

2017-08-05 17:27:07 200

原创 java并发编程学习1--基础知识

【java内存模型简介: JVM中存在一个主存区(Main Memory或Java Heap Memory),Java中所有变量都是存在主存中的,对于所有线程进行共享,而每个线程又存在自己的工作内存(Working Memory), 工作内存中保存的是主存中某些变量的拷贝,线程对所有变量的操作并非发生在主存区,而是发生在工作内存中,而线程之间是不能直接相互访问,变量在程序中的传递

2017-07-29 16:57:40 259

原创 java 动态代理

代理模式:      为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用, 其特征是代理类与委托类有同样的接口。 主要角色: 代码: package exercise.DynamicProxyExercise; /**

2017-06-19 18:07:00 182

原创 java锁

import org.junit.Test; import java.util.ArrayList; import java.util.List; import java.util.concurrent.CompletableFuture; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.Reen

2017-05-24 11:39:25 225

原创 【word count 程序】 通过 java8实现

hadoop的入门程序,java8也能实现 txt统计单词数量程序@Test public void fileWordCount() throws IOException { //特殊文件需要格式转换为txt Files.readAllLines(Paths.get("D:\\jd.txt"), StandardCharsets.UTF_8).parallelStream()

2017-05-16 14:41:01 1323 1

原创 一个CompletableFuture的例子

这是一个查询多个商店相同商品价格的例子,我会使用CompletableFuture的基础方法: 1.CompletableFuture.supplyAsync() : 异步获取方法返回值。 2.CompletableFuture.thenApply():将异步获取的返回值作为参数处理。 3.CompletableFuture.thenCompose():将上一个异步方法的返回值作为第二个异步

2017-05-08 11:35:42 3826

原创 MYSQL 查看数据库大小以及表的大小

在MySql的INFORMATION_SCHEMA数据库下执行: 一、查看每个数据库的大小 select table_schema,concat(round(sum(data_length/1024/1024),2),'MB') as data from tables GROUP BY  table_schema 二、查看某个库每个表的大小 select table_name,co

2017-05-02 12:40:23 578

原创 并行操作测试

并行操作:选择适当的数据结构比优秀的算法与实现更加重要。

2017-05-01 14:49:12 354

原创 java8交易员练习

java8 stream 常用操作归纳。

2017-05-01 14:42:28 682

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除