gpt4 book ai didi

Java多线程生产者消费者

转载 作者:行者123 更新时间:2023-12-01 16:54:43 25 4
gpt4 key购买 nike

按照这段代码,如何实现发送记录和获取记录之间的多线程。

public class Test_ProducerConsumer {  

// Main method
public static void main(String[] args) {

// Send records
for(int i=0; i<10; i++) {
kafka_io.send_records(sendtopic, "test_key", "test_value" + String.valueOf(i));
}

// Get records
try {
kafka_io.get_records(gettopic, 100000);
} catch (JSONException e) {
e.printStackTrace();
}
}
}

最佳答案

您可以使用BlockingQueue .

在接收项目方面,您可以阻塞线程直到有新项目到来,而对于任何其他线程,您可以添加项目并通知正在接收项目的线程。

// Inside a class
public static void main(String[] args) {
Runnable r = Consumer()
Thread t = Thread(r)
t.start()

// Send records
for(int i=0; i<10; i++) {
r.queue.add(DataWrapper(...));
}
}

class Consumer implements Runnable {
BlockingQueue<DataWrapper> queue = BlockingQueue();
@Override
public void run() {
while(true) {
DataWrapper data = queue.take();
// use data here
}
}
}

class DataWrapper {
String dataString; // these are your variables change as you want
int dataInt;
}

关于Java多线程生产者消费者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61610068/

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