java - 如何使用多线程向队列添加唯一值?
问题描述
public static class MutiThread extends Thread {
private Queue<String> waitingQue = new LinkedList<>();
private String intake;
public MutiThread (String str) {
intake = str;
}
public void run() {
Pattern p =Pattern.compile("\\d");
Matcher m=p.matcher(intake);
while (m.find()){
String temp = m.group();
if (!waitingQue.contains(temp)){
waitingQue.add(temp);
}
}
System.out.println(waitingQue);
}
}
public static void main(String[] args) {
MutiThread t1 = new MutiThread("112236");
t1.start();
MutiThread t2 = new MutiThread("1122345");
t2.start();
}
我有一个线程类,它接受一个字符串并检查该字符串是否匹配某个模式,如果是,如果它在队列列表中不存在,它将被添加。问题是,我想使用多线程向队列添加唯一值,每个线程启动并进入线程类并向队列添加一个唯一值。我的预期输出是队列值=“123456”但是上面的代码只给了我“1236”或“12345”我应该怎么做?
解决方案
问题(不是真的)是每个实例MultiThread
都有自己的队列实例。
如果您建议这可能是一个并发问题,那么它不是,或者至少目前不是。为了有并发问题,更多的线程需要共享对相同对象的访问。
推荐阅读
- html - 哪些 HTML 标签最后需要 />?
- themes - powerlevel9k的时间条到第二行
- javascript - 物业上市申请 | 谷歌地图 | 杰森 | Javascript | Laravel
- node.js - Sequelize Model Mocking findAll 和 findOne 使用 sequelize-mock 和 jest
- sql - Laravel 中的关系如何仅在数据透视处于活动状态时列出数据
- spring-boot - 使用 Spring Boot 向 JMS 队列发送消息
- flutter - 我如何在颤振中创建自定义进度指示器
- c - 给定一个整数矩阵 [n] [m],如何扫描子矩阵 [dim] [dim] 中的最大值?C
- jquery - 计算 div 元素并将类附加到其父容器
- python - 在整个参数空间/二维数组上应用函数,Numpy