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” 我该怎么办?
答案 0 :(得分:0)
问题(不是真的)是MultiThread
的每个实例都有自己的队列实例。
如果您建议这可能是并发问题,那不是,或者至少现在不是。为了解决并发问题,更多线程需要共享对同一对象的访问。