【问题标题】:Can you run one main method on multiple threads (concurrently)?您可以在多个线程上(同时)运行一种主要方法吗?
【发布时间】:2018-07-05 14:50:31
【问题描述】:

我是 SO/Java 软件开发的新手,我一直在寻找这方面的内容,但无济于事。

我的问题是——在 Java 中——是否可以一次跨多个线程运行一个主语句?我正在编写本机 Java 应用程序以对服务器进行负载测试。这个过程是让一堆线程同时运行来模拟用户。这些线程从某个文件中读取,获取各种 UID,操作一些标准数据,并将其发送到服务器上的队列。线程发送数据后,我们开始从响应队列中拉取数据,每个已经发送数据的线程开始检查新返回数据的 UID,如果匹配,则进程输出往返时间并终止。

算法盟友,这是我计划实现的,但是我对并发和使用多线程没有太多经验,所以我不确定如何让线程运行这个过程。我见过使用 WorkerThreads 数组的其他工作,并且我已经阅读了线程 API 并阅读了有关并发的各种教程。任何指导都会有所帮助。 谢谢!

【问题讨论】:

  • “主要陈述”是什么意思?如果您在谈论主方法,那只是一个用作程序入口点的静态方法。之后你要做什么完全取决于你。
  • 请出示一些代码什么的。如果您需要模拟负载,请查看 JMeter。
  • 抱歉,已编辑为包含代码。由于分配的性质和服务器/队列的设置方式,我无法使用 JMeter、LoadRunner 或其他类似工具。

标签: java multithreading


【解决方案1】:

实现并发工作者的推荐方法是使用 Executor 服务。模式是这样的:

  ExecutorService pool = Executors.newFixedThreadPool(poolSize);
  ...


  while (...) {
      final int someParameter = ...
      pool.submit(new Runnable() {
              public void run() {
                  // do something using 'someParameter'
              }
      });
  }

这种方法处理了手动创建和管理线程池的复杂过程。

有很多变化;请参阅 ExecutorsExecutorService 的 javadocs。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-03
    • 2013-08-13
    • 2021-10-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多