社区首页 >问答首页 >在构造函数中启动线程

在构造函数中启动线程
EN

Stack Overflow用户
提问于 2012-06-08 00:36:30
回答 1查看 305关注 0票数 1

Brian关于安全施工技术的文章中,您可以读到:

..。通常,当一个对象拥有一个线程时,要么是一个内部类,要么我们将这个引用传递给它的构造函数(或者类本身扩展了thread类)。如果一个对象要拥有一个线程,最好是该对象提供一个start()方法,就像thread那样,并且从start()方法而不是从构造函数启动线程。虽然这确实通过接口公开了类的一些实现细节(例如可能存在一个拥有的线程),但在这种情况下,从构造函数启动线程的风险大于隐藏实现的好处。

我想下面的代码不会有任何问题。因为它不是一个内部类,我也不传递this的引用。但我想确定。

代码语言:javascript
代码运行次数:0
复制
private Controller controller;
private View view;

public Facade() {
    view = new View();
    controller = new Controller(view);
    controller.start();
}

我一直收到NetBeans警告.这段代码是安全的还是不安全的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-08 00:46:23

在构造函数中没有启动线程的主要原因--在创建"this“之前(在构造函数执行之后)不要公开"this”。在您的代码中,我看不到这样的代码:

代码语言:javascript
代码运行次数:0
复制
new Thread(this);

所以应该会没事的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10945520

复制
相关文章
Java如何在运行时识别类型信息?
在日常的学习工作当中,有一些知识是我们在读书的时候就能够习得;但有一些知识不是的,需要在实践的时候才能得到真知——这或许就是王阳明提倡的“知行合一”。
沉默王二
2019/09/17
1.1K0
pycharm如何在运行时打开控制台[通俗易懂]
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/173186.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/25
1K0
pycharm如何在运行时打开控制台[通俗易懂]
如何在运行时动态添加和删除Qt Widgets
在油管上看到一篇关于Qt的视频:[How to Add & Remove Qt Widgets Dynamically at Runtime](https://www.youtube.com/watc
ccf19881030
2021/06/29
4K0
如何在运行时(Runtime)获得泛型的真正类型
由于Java 的类型擦除机制,在编译时泛型都被转为了Object,例如List<String>经过编译之后将变为类型 List。可以通过以下的方式再运行时获得泛型的真正类型
用户3148308
2018/12/04
2.9K0
在运行时与构建时如何保护云计算基础设施
在当今的云原生世界中,随着基础设施的飞速发展,大规模构建云计算环境需要可再现性和弹性,因此需要从一开始就优先考虑快速更改和扩展基础设施的能力。
静一
2020/07/16
1.2K0
rez现在可以在运行时主动缓存包了!
大家早上好 由于最近rez官方更新十分频繁 我回家又把rez的配置文件章节又看了一遍 发现有一个新的关键的key cache_packages_path 其实早在去年好像2.61左右的版本这个功能就已经有了 但是那时候测试了,没有成功就放弃了 今天再次测试的时候发现可以正常用了 可能最近的几个版本已经修复了这个问题 配置起来十分简单 我们把默认的配置复制出来 默认配置在(/src/rez/rezconfig.py) 然后设置环境变量 set REZ_CONFIG_FILE="your/local/re
用户9897904
2022/07/14
5630
rez现在可以在运行时主动缓存包了!
silverlight如何在运行时用代码动态控制(或创建)动画
silverlight做一些复杂动画时,不可能所有的动画都事先用Blend之类的设计工具"画"好(或者在设计期就在vs里编好),很多时候我们希望在运行时能动态控制动画,或者凭空动态创建一段动画. s
菩提树下的杨过
2018/01/23
1.5K0
silverlight如何在运行时用代码动态控制(或创建)动画
在运行时扩展报表系统之报表指令
SFReportListenerDirective是SFReportListener的一个子类。它的目标,是支持在备注字段USER中的指令,这些指令用来告诉listener如何处理一个报表对象。举个例子,“:LISTENER ROTATE = -45”指令告诉listener去把这个对象逆时针旋转45度。因为USER可以被用于各种目的,所以SFReportListenerDirective支持的指令必须以“:LISTENER”开头(如果你在FOXPRO 2.x时代用过GENSCRNX,你就熟悉这种类型的指令了)。
加菲猫的VFP
2022/04/07
7340
在运行时扩展报表系统之报表指令
自适应查询执行:在运行时提升Spark SQL执行性能
Catalyst是Spark SQL核心优化器,早期主要基于规则的优化器RBO,后期又引入基于代价进行优化的CBO。但是在这些版本中,Spark SQL执行计划一旦确定就不会改变。由于缺乏或者不准确的数据统计信息(如行数、不同值的数量、NULL值、最大/最小值等)和对成本的错误估算导致生成的初始计划不理想,从而导致执行效率相对低下。
大数据学习与分享
2020/11/26
2.5K0
灵活的令人抓狂,如何在运行时修改某一个 Python 对象的类?
这样的场景你也可能遇到:调试的时候,我需要追踪某一个 Python 对象的属性变化,比如对象 someobj = SomeClass(),当 someobj 添加了一个属性( someobj.age = 14)或者修改了属性的值 (someobj.age = 18)的时候,打印这些变化。
somenzz
2022/10/25
9160
灵活的令人抓狂,如何在运行时修改某一个 Python 对象的类?
从 Java 和 JavaScript 来学习 Haskell 和 Groovy(元编程)
本篇文章的话题是元编程。首先来认识元编程,我在第一篇 《引子》里面已经介绍:元编程,指的是在运行时改变 “类” 的定义,例如访问、增加或修改等等。一言以蔽之,就是 “用程序来写程序”。在第二篇的 《类型系统》里面已经借由继承和接口的实现,介绍了一些利用元编程特性来增加或改变子类行为的方法。回顾语言发展的长河,其实是经历了一个从 “对象 -> 类 -> 元类” 到 “对象 -> 原型” 的发展过程的。所以,无论是类,还是元类,这样的概念其实都不是非有不可的,只是因为我们思考的习惯,特别是抽象的习惯而顺其自然地产生了。这一点我在 《编程范型:工具的选择》里面已经详细描述了,建议在往下阅读前移步。
四火
2022/07/18
5450
从 Java 和 JavaScript 来学习 Haskell 和 Groovy(元编程)
编译时多态和运行时多态
多态分为两种情况:编译时多态和运行时多态。 如果在编译时能够确定执行多态方法称为编译时多态,否则称为运行时多态。
用户7886150
2021/02/13
5620
编译时异常和运行时异常[通俗易懂]
Throwable: 有两个重要的子类:Exception(异常)和 Error(错误),二者都是 Java 异常处理的重要子类,各自都包含大量子类。
全栈程序员站长
2022/07/01
2.6K0
编译时异常和运行时异常[通俗易懂]
字节码编程,Javassist篇三《使用Javassist在运行时重新加载类》
通过前面两篇 javassist 的基本内容,大体介绍了;类池(ClassPool)、类(CtClass)、属性(CtField)、方法(CtMethod),的使用方式,并通过创建不同类型的入参出参方法,基本可以掌握如何使用这样的代码结构进行字节码编程。
小傅哥
2020/04/22
2.9K1
字节码编程,Javassist篇三《使用Javassist在运行时重新加载类》
有哪些方法可以在运行时动态生成一个Java类?
我们可以从常见的 Java 类来源分析,通常的开发过程是,开发者编写 Java 代码,调用 javac编译成 class 文件,然后通过类加载机制载入 JVM,就成为应用运行时可以使用的 Java 类了。从上面过程得到启发,其中一个直接的方式是从源码入手,可以利用 Java 程序生成一段源码,然后保存到文件等,下面就只需要解决编译问题了。 有一种笨办法,直接用 ProcessBuilder 之类启动 javac 进程,并指定上面生成的文件作为输入,进行编译。最后,再利用类加载器,在运行时加载即可。
葆宁
2019/04/18
2.5K0
Java 编译时多态和运行时多态
根据何时确定执行多态方法中的哪一个,多态分为两种情况:编译时多态和运行时多态。如果在编译时能够确定执行多态方法
全栈程序员站长
2022/09/01
6490
Java 编译时多态和运行时多态
点击加载更多

相似问题

如何修复QuasiQuoter警告?

13

如何在运行时编译代码

30

如何在运行时编译函数?

34

在运行时编译常量

32

如何在运行时编译CIFilter?

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文