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

使用可运行对象的相同实例初始化两个线程

卓嘉良
2023-03-14
问题内容

用可运行对象的相同实例初始化两个线程是否不好编程?用可运行对象的单独实例进行初始化有什么区别,并且为同一可运行实例共享所有内存位置是否与性能有关?

public static void main(String[] args)throws Exception {
   H h = new H();
   H h2 = new H();
   Thread j = new Thread(h);
   j.setName("11");

   Thread jj = new Thread(h);//instead of new H()
   jj.setName("22");
   j.start();
   jj.start();
}

class H implements Runnable {
    public void run() {
        while(true) {
           System.out.println(Thread.currentThread().getName());
        }
    }
}

问题答案:

只要您正在运行的代码旨在支持该功能,就可以做到这一点。它不仅可以通过拥有一个实例而不是多个实例来节省一些内存,而且如果这些线程 试图
通过共享数据进行通信,那么它绝对是必需的!

公认的是,通过共享状态进行通信通常会使线程变得棘手,因此需要谨慎进行,但是从线程系统本身的角度来看,让两个线程调用run单个Runnable实例的方法绝对没有问题。



 类似资料:
  • 我在使用Mockito进行单元测试初始化对象时遇到了一些困难 这是我的测试代码 要测试的代码 RecTangleService、CircleService和SquareService用注释我尝试了很多选项,最终得出结论。我没有得到我错在哪里。我试着在网上搜索了很多地方,但找不到任何帮助。

  • 本文向大家介绍Java实现的两个线程同时运行案例,包括了Java实现的两个线程同时运行案例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Java实现的两个线程同时运行。分享给大家供大家参考,具体如下: 运行结果: 更多java相关内容感兴趣的读者可查看本站专题:《Java进程与线程操作技巧总结》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作

  • 问题内容: 我在用Java工作。 我通常会这样设置一些对象: 问题是:在此示例中是否等于,按原样我可以假定对未初始化的对象进行空检查将是准确的? 问题答案: 正确,未显式初始化的引用类型的静态成员和实例成员都由Java 设置为。相同的规则适用于数组成员。 根据Java语言规范的第4.12.5节: 变量的初始值 程序中的每个变量在使用值之前都必须具有一个值: 每个类变量,实例变量或数组组件在创建时均

  • 我预计Spring会通过将属性“property.key”设置为“property_value”来初始化StorageConfiguration对象。 但是,我得到以下异常 org.springframework.beans.factory.beanCreationException:创建类路径资源[applicationContext.xml]中定义的名为“storage”的bean时出错:在设

  • 前面一节的 Fruit 类有两个实变量,分别表述水果的类型和状态.直到为这个类写了一个定制的inspect方法,我们方才了解它不会对一个缺乏属性的水果做出合理的解释.幸运的是,Ruby提供了一种允许实变量总是被初始化的方法. initalize方法 当Ruby创建一个新对象时,它总是会寻找一个名为 initialize 的方法并执行它.因此,我们可以简单通过一个initialize方法向实变量中加