自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 CompletionService的使用

Callable在多个异步任务里并不能把最先完成的任务返回结果,针对于这个缺点,CompletionService很好的解决这个问题。在CompletionService中提供了提交异步任务的方法(真正的异步任务执行还是由其内部的ExecutorService完成的),任务提交之后调用者不再关注Future,而是从BlockingQueue中获取已经执行完成的Future,在异步任务完成之后Future才会被插入阻塞队列,也就是说调用者从阻塞队列中获取的Future是已经完成了的异步执行任务,所以再次通过F

2021-08-30 15:10:03 129

原创 Semaphore的使用

Semaphore(信号量)从概念上讲,信号量维护了一个许可集。如有必要,在许可可用前会阻塞每一个 acquire(),然后再获取该许可。每个 release() 添加一个许可,从而可能释放一个正在阻塞的获取者。但是,不使用实际的许可对象,Semaphore 只对可用许可的号码进行计数,并采取相应的行动。拿到信号量的线程可以进入代码,否则就等待。通过acquire()和release()获取和释放访问许可。 Semaphore semaphore = new Semaphore(5);

2021-08-17 14:57:55 143

原创 Future和Callable

目录Callable和Runnable的区别Future的使用Future的缺点ExecutorService方法execute()与submit()的区别Callable和Runnable的区别Callable接口的call()方法可以有返回值(通过Future接口进行获得的),而Runnable接口的run()方法没有返回值。Callable接口的call()方法可以声明抛出异常,而Runnable接口的run()方法不可以声明抛出异常。Future的使用作为多线程的异步执行结果,Fut

2021-02-24 15:09:29 334

原创 ThreadPoolExecutor 是如何工作的?那么多参数到底怎么用?

这里写自定义目录标题ThreadPoolExecutor的参数含义ThreadPoolExecutor是如何工作的ThreadPoolExecutor的参数含义如果你在工作中用到线程池了,那一定要用 ThreadPoolExecutor 这个类,这个类里面有常用5个参数(实际上是7个),但是呢,有几种情况,使用的时候往往分不清,之后觉得线程池很难,今天我就用例子来说明一下具体用法,今后不再犯难ThreadPoolExecutor。public ThreadPoolExecutor(int corePo

2021-02-20 15:54:03 713 2

原创 常见的BlockingQueue有哪些

常见的BlockingQueue有哪些?ArrayBlockingQueue基于数组结构,构造函数时需要指定最大容量,当队列里的元素超过最大容量时,要么阻塞,要么直接返回结果,写入数据时不能写入null。阻塞式写入向队尾写入数据,队列满后一直阻塞,除非有消费了,或者线程中断put(E e)向队尾写入数据,队列满后开始阻塞,阻塞指定时间后,结束阻塞,不会写入成功,返回结果falseoffer(E e, long timeout, TimeUnit unit)非阻塞式写入当队列满了后,直接

2021-01-18 17:01:25 298

原创 CyclicBarrier的简单使用

由来CountDownLatch虽然好用,但是也有不足,就是它的计数器不能循环使用,是属于一次性的消费品,对此CyclicBarrier倒是弥补了它这个不足,大部分情况下CyclicBarrier是对CountDownLatch的补充,但是两者还是有一点小小的区别例子假如公司团建,大家一起做大巴车,在大巴车出发之前,肯定是需要点名的,只有大家都到车上之后,才会发车,然后到了到了目的地之后,肯定是所有人都下车了,司机才能把车开走,这个过程中涉及了2次大家都就位之后,司机才能继续操作,可以证明Cyclic

2020-10-16 16:41:31 86

原创 CountDownLatch简单入门

由来在多线程的开发中,有时候会遇到线程间需要互相配合的业务操作,比如某一个线程需要其他几个线程执行完了之后再执行 (一个等多个)一些线程需要在某个时刻同时执行,就像等待裁判员枪响后,才能同时起跑(多个等一个)此时就不太好控制线程执行的顺序了,需要使用CountDownLatch这个类。CountDownLatch也是一个同步功能的辅助类,使用效果是给定一个计数,当使用这个CountDownLatch类的线程判断计数不为0时,则呈wait状态,如果为0时则继续运行。实现等待与继续运行的效果分别

2020-10-15 15:20:37 193 1

原创 Linux防火墙操作端口号

Linux防火墙操作端口号查看防火墙状态systemctl status firewalld开启防火墙systemctl start firewalld关闭防火墙systemctl stop firewalld查看已经开放的端口firewall-cmd --list-ports查询指定端口是否已开(比如zk的2181)提示 yes,表示开启;no表示未开启。firew...

2020-05-08 12:57:12 215

原创 Linux下单机安装Kafka

前提kafka使用zookeeper来保存元数据,所以安装kafka之前需要先安装zookeeper。安装zookeeper教程下载Kafka下载地址 http://kafka.apache.org/downloads安装解压后进入目录cd kafka_2.12-2.1.0/启动:nohup ./bin/kafka-server-start.sh config/server.p...

2020-05-03 13:36:35 371

原创 Linux下单机安装Zookeeper

目录前提下载Zookeeper安装启动和停止Zookeeper前提需要先装好Java环境下载Zookeeper下载地址:https://zookeeper.apache.org/releases.html安装复制一份 conf/ 下的zoo_sample.cfg 并改名为zoo.cfgcd confcp zoo_sample.cfg zoo.cfg修改zoo.cfg配置文件...

2020-05-02 18:56:40 337

空空如也

空空如也

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

TA关注的人

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