当前位置: 首页 > 面试题库 >

“无法复制”-Java确定性多线程处理可能吗?

文志学
2023-03-14
问题内容

是否可以确定性地运行多线程Java应用程序?我的意思是在应用程序的两次不同运行中始终具有相同的线程切换。

原因是在每次运行中都在完全相同的条件下运行模拟。

类似的情况是,当使用随机数生成器获得始终相同的“随机”序列时,给出任意种子。


问题答案:

我不知道有任何实际的方法可以做到这一点。

从理论上讲,在某些假设下1可以实现具有完全确定性行为的字节码解释器。您将需要通过完全在软件中实现线程和线程调度并使用单个本机线程来模拟多个线程。

1-例如,没有I / O,并且不使用系统时钟。



 类似资料:
  • 这是否可以以确定性方式运行多线程Java应用程序?我的意思是在我的应用程序的两个不同运行中始终切换相同的线程。 原因是在每次运行中都要在完全相同的条件下运行模拟。 类似的情况是,当使用随机数生成器获得始终相同的“随机”序列时,给出一些任意种子。

  • 问题内容: Java如何确定分配线程或进程的内核?有什么办法可以控制吗?防止两个大线程在同一内核上执行? 基本上,我要问的是有关Java中多线程如何工作或如何在Java中控制它的更多信息。 问题答案: 您不能为特定线程设置处理器关联。但是,如果将程序分为两个进程,则应该能够将这些进程分配给操作系统级别的特定处理器。 http://www.cyberciti.biz/tips/setting-pro

  • 我正在下拉一个充满数据的表,我需要处理这一点,并对每一行进行一点格式化,然后推出一个REST API。 我使用了一个PostgreSQL数据库和Java实现,其思想是将所有数据向下拉,获得行的数量,并向上旋转线程以一次处理一个块。 我已经建立了连接,并将表拉入缓存行集,并使用、和获取行计数。 我正试图找到一种方法,将行集的一大块拆分出来并将其交给处理,但我似乎看不到任何方法可以做到这一点。 有极限

  • 问题:当我创建一个自定义线程以异步方式处理传入的HTTP请求时,我是否真的因为引入了太多线程而损害了性能? 更多细节:假设传入的请求需要执行一些繁重的数据库操作。Web服务器负载很重,在任何给定时刻,10个请求处理线程都在忙于处理请求。服务器有10个核心,所以假设每个核心运行一个线程。 请求以同步方式处理,每个请求处理线程从到达到完成处理作业。但是需要对数据库进行一些等待。 可能的“改进”是稍微更

  • 我正在学习Java的易失性,我的代码是这样的。 我知道如果flag没有volatile,线程就不会存在。这是能见度的问题。 但是,如果我在while循环中编写一些代码,如,t1线程将读取新值并停止循环。 我知道如何使用volatile来解决可见性问题,所以我的问题是: 为什么当我写?

  • 我正在尝试使用多个处理器类在处理器步骤中处理记录。这些类可以并行工作。目前我已经编写了一个多线程步骤,其中我 设置处理器类的输入和输出行 提交给遗嘱执行人服务 获取所有未来对象并收集最终输出