java阻塞队列/kafka

news/2025/2/5 19:59:45/

queue增加删除元素

  • 增加元素
    • add方法在添加元素的时候,若超出了度列的长度会直接抛出异常:
    • put方法,若向队尾添加元素的时候发现队列已经满了会发生阻塞一直等待空间,以加入元素
    • offer方法在添加元素时,如果发现队列已满无法添加的话,会直接返回false
  • 删除元素
    • poll: 若队列为空,返回null。
    • remove:若队列为空,抛出NoSuchElementException异常。
    • take:若队列为空,发生阻塞,等待有元素

BlockingQueue:

  • 解决线程通信的问题
  • 阻塞方法:put、take

其他实现类:

  • ArrayBlockingQueue
  • LinkedBlockingQueue
  • PriorityBlockingQueue/ SynchronousQueue/ DelayQueue

BlockingQueue实例

package com.nowcoder.mycommunity;import java.util.Queue;
import java.util.Random;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;public class BlockingQueueTests {public static void main(String[] args) {BlockingQueue queue = new ArrayBlockingQueue(10);new Thread(new Producer(queue)).start();new Thread(new Consumer(queue)).start();new Thread(new Consumer(queue)).start();new Thread(new Consumer(queue)).start();}
}class Producer implements Runnable{private BlockingQueue<Integer> queue;public Producer(BlockingQueue<Integer> queue){this.queue = queue;}@Overridepublic void run() {try {for(int i = 0; i < 100; ++ i){queue.put(i);Thread.sleep(20);System.out.println(Thread.currentThread().getName() + "   producer" + queue.size());}}catch (Exception e){e.printStackTrace();}}
}class Consumer implements Runnable{public BlockingQueue<Integer> queue;public Consumer(BlockingQueue<Integer> queue){this.queue = queue;}@Overridepublic void run() {try {while (true) {queue.take();Thread.sleep(new Random().nextInt(1000));System.out.println(Thread.currentThread().getName() + "   consuer" + queue.size());}} catch (Exception e) {e.printStackTrace();}}
}

kafka

  • kafka是一个分布式的流媒体平台
  • 主要应用:消息系统、日志收集、用户行为追踪、流式处理
  • 特点:高吞吐量、消息持久化(存放在磁盘上,btw,磁盘顺序读写速度并不慢)、高可靠性、高扩展性

Broker

kafka的服务器,每一台服务器称为一个Broker

Zookeeper

管理其他集群,包括kafka的集群。可以单独下载

Topic/ Partition/ Offset

消息队列可能是一对多的形式,生产者将一条消息放在多个队列中,然后消费者从各自的队列中取消息。
下图为一个Topic,Topic中可能会含有很多Partition,Offset为Partition的索引
在这里插入图片描述

Leader Replica/ Follower Replica

kafka的数据不止存储一份,他会存为多份,即使某一个分区坏了还可以有备份。
leader Replica(祖副本):当尝试从分区获取数据时,祖副本可以处理请求,返回数据
Follower Replica(随从副本):只能备份,不能响应请求
如果祖副本挂掉,集群会从Follower Replica中选一个作为新的leader

kafka命令

官方文档

使用

进入到kafka的目录中

// 启动zookeeper
> ./bin/zookeeper-server-start.sh config/zookeeper.properties // 启动kafka
> ./bin/kafka-server-start.sh config/server.properties // --create:创建主题
// --bootstrap-server localhost:9092:在哪个服务器创建主题,kafka默认端口为9092
// --replication-factor 1:副本为1
// --partitions 1:分区为1
// --topic test:主题的名字
> ./bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test
Created topic test.// 查看该服务器上的主题
> ./bin/kafka-topics.sh --list --bootstrap-server localhost:9092            
test// 创建生产者向某个服务器的某个主题中发消息
> ./bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test        
>hello
>world// 创建一个消费者,读取某个服务器上某个主题下的消息队列,从头开始读取
> ./bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
hello
world

http://www.ppmy.cn/news/682905.html

相关文章

《深入浅出SSD:固态存储核心技术、原理与实战》----学习记录(三)

第3章 SSD存储介质&#xff1a;闪存 3.1 闪存物理结构 3.1.1 闪存器件原理 1978年诞生的世界上第一块固态硬盘就是基于DRAM的。但由于保存在DRAM中的数据有掉电易失性&#xff0c;当然还有成本因素&#xff0c;所以现在的固态硬盘一般都不采用DRAM&#xff0c;而是使用闪存…

国产蓝牙耳机排行,500元蓝牙耳机性价比之王

蓝牙耳机可以说是这两年来最受用户追捧的数码产品之一&#xff0c;其之所以能快速受到大众喜爱&#xff0c;除了便携和手机耳机接口的迭代外&#xff0c;还有技术的成熟&#xff0c;音质方面与有线耳机的差距越越来越小了&#xff0c;尤其是我们的国产品牌&#xff0c;在音质表…

618学生党必备蓝牙耳机,高性价比无线蓝牙耳机推荐

这几年我们对于耳机的使用已经渐渐从传统有线耳机到无线蓝牙耳机的改变&#xff0c;同样无线蓝牙耳机里面最热销也分为入耳式&#xff0c;半入耳式&#xff0c;骨传导蓝牙耳机的&#xff1b;学生党目前对蓝牙耳机需求更多的是运动&#xff0c;观看视频以及听音乐这几个方面&…

计算机配置及性能测试,硬件配置检测及系统性能测试

硬件配置检测及系统性能测试 正如我们前面提到过的&#xff0c;这款长得像熊猫的本本——丽屏T23在5999元的价位下&#xff0c;采用了英特尔奔腾双核T2310处理器、GL960芯片组、1GB DDR2-667内存、120GB硬盘、GMA X3100集成显示芯片、Combo光驱和3945ABG无线模块&#xff0c;作…

学生党平价无线蓝牙耳机推荐,2022性价比高的无线蓝牙耳机品牌推荐

随着蓝牙技术的发展成熟&#xff0c;现如今的蓝牙无线耳机已经摆脱了以往“听个响”的尴尬的情况&#xff0c;无论是音质还是连接稳定性都有了质的飞跃。那么学生党如何挑选适合自己的蓝牙耳机呢&#xff1f;今天给大家推荐几款性价比高的平价蓝牙耳机&#xff0c;都是非常适合…

什么蓝牙耳机性价比高?总结5款高性价比平价蓝牙耳机

我们买蓝牙耳机的时候都有自己的喜好。有些人喜欢听歌&#xff0c;有些人喜欢游戏&#xff0c;有些人喜欢综合实力。那么&#xff0c;便宜的价钱能买到的高性价比蓝牙耳机有哪些呢&#xff1f;今天就和大家聊一聊。 1、Xisem西圣Ava蓝牙耳机 Xisem西圣蓝牙耳机在国产蓝牙耳机品…

蓝牙耳机什么牌子的好用?蓝牙耳机推荐高性价比

蓝牙耳机可以说是目前最主流的数码产品了&#xff0c;耳机市场的蓝牙耳机众多&#xff0c;选购蓝牙耳机更多的是看多用于哪里&#xff0c;听歌、玩游戏、通话等等&#xff0c;但是消费群众一致追求的即使性价比&#xff0c;下面整理几款性价比高的蓝牙耳机&#xff0c;一起往下…

突出的就是一个「性价比」— 小新 Air 14 2020 评测

联想的小新和 Yoga 系列在最近的口碑了很大幅度的提升,小新也将会在 2020 年走到第 6 个年头,小新 Air 14 作为一个中端定位的产品,主打的就是「性价比」,而隔壁的 Yoga 系列则是「质价比」,一个拥有更强的性能,一个则会在质感和档次上更进一步。 小新 Air 14 2020 款的设…