为什么这样写java线程不能用?
public class test {
@Test
public void kafkaProgram(){
String topic = "visited";
KafkaP producer = new KafkaP(topic);
KafkaC consumer = new KafkaC(topic);
Thread t1 = new Thread(producer);
t1.start();
Thread t2 = new Thread(consumer);
t2.start();
Thread t3 = new Thread(consumer);
t3.start();
}
}
class KafkaP extends Thread{
@Override
public void run(){
while (true){
System.out.println("开始生产数据");
}
}
}
class KafkaC extends Thread{
@Override
public void run(){
System.out.println("开始消费数据");
while (true){
synchronized (KafkaC.class){
System.out.println("消费数据:"+record.value());
}
}
}
}
代码只包含了和线程相关的
省略部分的代码单独调试下都没有问题
如果用start
方法 则三个线程都只会运行一遍 没有达到一直跑的效果
如果用run
方法 则只会阻塞在t1, t2t3
不会运行
是不是线程这里写错了?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
放main 方法里面跑。