Java 如何使用多线程向队列添加唯一值? 公共静态类multithread扩展线程{ private Queue waitingQue=new LinkedList(); 私家弦式取水口; 公共多线程(字符串str){ 摄入量=str; } 公开募捐{ 模式p=模式编译(\\d”); 匹配器m=p匹配器(进气); while(m.find()){ 字符串温度=m.组(); 如果(!waitingQue.包含(温度)){ 等待时间添加(临时); } } 系统输出打印(waitingQue); } } 公共静态void main(字符串[]args){ 多线程t1=新的多线程(“112236”); t1.start(); 多线程t2=新的多线程(“1122345”); t2.start(); }

Java 如何使用多线程向队列添加唯一值? 公共静态类multithread扩展线程{ private Queue waitingQue=new LinkedList(); 私家弦式取水口; 公共多线程(字符串str){ 摄入量=str; } 公开募捐{ 模式p=模式编译(\\d”); 匹配器m=p匹配器(进气); while(m.find()){ 字符串温度=m.组(); 如果(!waitingQue.包含(温度)){ 等待时间添加(临时); } } 系统输出打印(waitingQue); } } 公共静态void main(字符串[]args){ 多线程t1=新的多线程(“112236”); t1.start(); 多线程t2=新的多线程(“1122345”); t2.start(); },java,multithreading,Java,Multithreading,我有一个线程类,它接收一个字符串,并检查该字符串是否与特定模式匹配,如果匹配,并且如果队列列表中不存在该字符串,则将添加该字符串。 问题是,我想使用多线程向队列添加唯一值,每个线程启动并进入thread类,向队列添加一个唯一值。 我的预期输出是queue value=“123456”,但是上面的代码只给出“1236”或“12345” 我应该怎么做?问题(不是真的)是多线程的每个实例都有自己的队列实例 如果您认为这可能是一个并发性问题,那么事实并非如此,或者至少在这一点上并非如此。要解决并发问题,

我有一个线程类,它接收一个字符串,并检查该字符串是否与特定模式匹配,如果匹配,并且如果队列列表中不存在该字符串,则将添加该字符串。 问题是,我想使用多线程向队列添加唯一值,每个线程启动并进入thread类,向队列添加一个唯一值。 我的预期输出是queue value=“123456”,但是上面的代码只给出“1236”或“12345” 我应该怎么做?

问题(不是真的)是
多线程的每个实例都有自己的队列实例


如果您认为这可能是一个并发性问题,那么事实并非如此,或者至少在这一点上并非如此。要解决并发问题,更多线程需要共享对相同对象的访问。

每个线程都有自己的
waitingQueue
而且您的类名有一个打字错误
MultiThread
应该是
MultiThread
我建议使用
ConcurrentLinkedQueue
而不是
LinkedList
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();
}