夏未央-夜未眠 2016-11-30 03:05 采纳率: 0%
浏览 3532

Java多线程并发如何模拟

一个Java Application运行后,在系统中是作为一 个线程吗?运行main方法以后,为什么不能实现多个线程启动?我想用java程序模拟多个消费者和kafka生产者通信,可以实现吗
import org.apache.kafka.clients.consumer.ConsumerRecord;
import org.apache.kafka.clients.consumer.ConsumerRecords;
import org.apache.kafka.clients.consumer.KafkaConsumer;

import java.util.Arrays;
import java.util.Properties;

/**

  • Created by Administrator on 2016/10/17.
    */
    public class consumerTest extends Thread{
    public synchronized void run(){
    Properties props = new Properties();
    props.put("bootstrap.servers", "localhost:9092");
    //消费者组group
    props.put("group.id", "test");
    //是否自动确认offset
    props.put("enable.auto.commit", "true");
    //自动确认offset的时间间隔
    props.put("auto.commit.interval.ms", "1000");
    //会话超时时间
    props.put("session.timeout.ms", "30000");
    //key的序列化类
    props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
    //value的序列化类
    props.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
    KafkaConsumer consumer = new KafkaConsumer(props);
    //消费者订阅的topic, 可同时订阅多个
    consumer.subscribe(Arrays.asList("test"));
    while (true) {
    //读取数据,读取超时时间为100ms
    ConsumerRecords records = consumer.poll(100);
    for (ConsumerRecord record : records)
    System.out.println(String.format("offset = %d, key = %s, value = %s", record.offset(), record.key(), record.value()));
    }
    }

    public static void main(String[] args) {
    consumerTest test1=new consumerTest();
    Thread threads[] = new Thread[5];
    for (int i = 0; i < threads.length; i++)
    threads[i] = new Thread(test1);
    for (int i = 0; i < threads.length; i++)
    {
    threads[i].start();
    }
    }
    }

  • 写回答

2条回答 默认 最新

  • 毕小宝 博客专家认证 2016-11-30 03:57
    关注
     你去搜索demo运行,看看结果,然后单步跟踪下执行过程就明白了。生产者消费者模式最重要的就是共享同一个资源队列,一个存一个取,这个过程中做好同步处理。
    
    评论

报告相同问题?

悬赏问题

  • ¥15 有卷积神经网络识别害虫的项目吗
  • ¥15 数据库数据成问号了,前台查询正常,数据库查询是?号
  • ¥15 算法使用了tf-idf,用手肘图确定k值确定不了,第四轮廓系数又太小才有0.006088746097507285,如何解决?(相关搜索:数据处理)
  • ¥15 彩灯控制电路,会的加我QQ1482956179
  • ¥200 相机拍直接转存到电脑上 立拍立穿无线局域网传
  • ¥15 (关键词-电路设计)
  • ¥15 如何解决MIPS计算是否溢出
  • ¥15 vue中我代理了iframe,iframe却走的是路由,没有显示该显示的网站,这个该如何处理
  • ¥15 操作系统相关算法中while();的含义
  • ¥15 CNVcaller安装后无法找到文件