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

将单个可运行对象传递给多个线程构造函数

步兴为
2023-03-14
问题内容

如果我创建一个可运行的对象

Runnable run = new MyRunnable();

然后将相同的对象传递给两个线程构造函数并运行它们

new Thread(run).start;
new Thread(run).start;
  1. 有可能吗?这意味着什么?
  2. 如果我调用Thread.sleep(0); 在MyRunnable类中,两个线程会因为它们是同一对象而休眠,还是线程实体与该对象完全分开?
  3. 是否会有理由这样做,如果不能,请仍然回答上面的两个问题,因为我还不完全了解线程机制?

问题答案:
  1. 这绝对是可能和合法的。如果您Runnable没有状态(没有字段),那么一切都会好起来的。如果Runnable确实具有可变状态,则可能需要使用Java的许多 互斥机制之一, 例如ReentrantLocksynchronized关键字。因为两个线程都将使同一Runnable对象的字段发生变化。

  2. 不,您创建并运行了两个不同的线程。他们只是打电话Runnable.run()

  3. 这并非超出可能性范围。我什至不会说这一定是坏习惯。您可能会做的特定情况留给读者作为练习…



 类似资料:
  • 我创建了一个Author对象,用于构造函数的方法签名:public Book但是,我所做的赋值要求将Author(实例变量)更改为。当然,现在我以前的构造函数不行了。这是密码 如果我上传的方式不令人满意,我对任何不便表示歉意。我还没有学会使用堆栈溢出。 谢谢!

  • 我试图使一个用户类和使用类来处理登录,但从某种原因我的用户类构造函数是读取我的mysqli对象作为一个字符串 这是我的密码 Class.php mysql.php checklogin.php 它给了我这个错误 可捕获的致命错误:在第13行的C:\wamp\www\class.php中,类mysqli的对象无法转换为字符串 我要把头发拔出来了,有什么想法吗?

  • 问题内容: 我正在编写的应用程序在某个阶段会生成一个ArrayList of Characters。在此阶段,我正在尝试创建一个线程来处理此ArrayList。问题是如何将这个ArrayList传递给线程 描述代码: ProcessList的描述性代码: 我的问题是:如何在run()中传递和访问aList? 问题答案: 您可以简单地传递给的构造函数,该构造函数可以保留引用,直到需要它为止: 注意:

  • 问题内容: 大家晚上好。 当尝试将一个对象传递给另一个对象构造函数时,我似乎遇到了一个奇怪的问题,该对象的构造函数也依赖于要传递给它的对象。 例如,使用以下示例: 但是,在构造ToolBar时,它将返回NullPointerException。当然,这是因为尚未构建webPanel并且需要它。 减速和初始化都必须保留在同一类(称为BuildUI)中,因为这是我设置属性的地方。(对于ToolBar创

  • 我为什么要这样做?因为lambda表达式生成的ClosureType不是默认可构造的。通过这个“技巧”,我可以默认构造这样的closureType。 此外,模板参数的要求是,它必须为空=>

  • 问题内容: 我正在将一个对象传递给我的控制器,如下所示: 我的控制器将其视为它正在寻找的对象: 我的问题是我只想再传递一个字符串。我知道我可以制作特定于视图的模型,但我想知道是否可以执行以下操作: 我没有运气就尝试了以下方法: 但是复杂对象只是作为null来的。有没有办法我也可以传递对象和字符串? 问题答案: 尝试将字符串项添加到已有的JSON中。不要对其进行字符串化,否则它将发送一个大字符串,您