gpt4 book ai didi

java - java中的链表队列不适用于线程

转载 作者:行者123 更新时间:2023-12-01 15:51:50 25 4
gpt4 key购买 nike

这是我用来实现队列的代码。这里队列轮询总是返回 null,即使队列不为空。

Runnable runnable = new Runnable() {

@Override
public void run() {
service.schedule(runnable, 500, TimeUnit.MILLISECONDS);
process();
}

public void process() {
try {
String tt = nextItem();
//System.out.println("SQ:"+tt);
} catch (Exception e) {//Catch exception if any
System.out.println("2Error: " + e.getMessage());
}
}
};

public String nextItem() {
Object poll;
try {
synchronized (queue) {
System.out.println("SQ:" + queue.poll());
//if (poll != null) {
// return poll.toString();
//} else {
return "";
//}
}
} catch (Exception e) {
e.printStackTrace();
return "";
}
}

public void run() {
try {
Class.forName("com.mysql.jdbc.Driver");
String url =
"jdbc:mysql://1xxx:3306/ayan";
Connection con =
DriverManager.getConnection(
url, "[user]", "[pass]");

Queue queue = new LinkedList();
service = Executors.newScheduledThreadPool(1000);
service.schedule(runnable, 0, TimeUnit.MILLISECONDS);
while (true) {
Statement statement = con.createStatement();
statement.setFetchSize(1);
ResultSet resultSet = statement.executeQuery("SELECT * from query_q");
while (resultSet.next()) {
// process results. each call to next() should fetch the next row
String id = resultSet.getString("id");
String query = resultSet.getString("query");
String msisdn = resultSet.getString("msisdn");
String pass = id + "|" + query + "|" + msisdn;
System.out.println("MQ:" + pass);
//String str = "foo";
//Queue<Character> charsQueue = new LinkedList<Character>();
boolean inserted = false;
for (char c : pass.toCharArray()) {
inserted = queue.offer(c);
}

if (inserted != false) {
// Statement stats = con.createStatement();
//stats.executeUpdate("delete from query_q where id=" + id);
}
}
Thread.sleep(10000);
}
//con.close();
}

最佳答案

LinkedList 是唯一的非线程安全队列。任何其他实现都会是更好的选择。您的报价未同步。 ;)

ExecutorService 有一个内置队列。您可以利用它,而根本不需要创建自己的队列。只需执行(可运行)任务,因为您需要完成某些事情。

关于java - java中的链表队列不适用于线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5872892/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com