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
不会运行
是不是线程这里写错了?
放main 方法里面跑。