说明:在构造器中启动线程会很有问题,因为另一个任务可能会在构造器结束之前开始执行,导致该任务会访问到处于不稳定状态的对象。这也是优选Executor而不是显示创建Thread对象的原因。

如下俩种实现方式(来自Thinking in Java 的范例),这里有个疑问:是谁调用了toString 方法??从而输出相应的内容??求解。

1.

public class SimpleThread extends Thread{

private int countDown = 5;

private static int threadCount = 0;

public SimpleThread(){

super(Integer.toString(threadCount));

start();

}

public String toString(){

return "#"+getName()+"("+countDown+")";

}

public void run(){

while(true){

System.out.println(this);

if(--countDown == 0){

return;

}

}

}

public static void main(String[] args) {

for(int i=0;i<5;i++){

new SimpleThread();

}

}

}

2.

package zipDemo;

public class SelfManaged implements Runnable{

private int coutdown = 5;

//当写成这样的时候 private Thread t = new Thread(); 当前线程不会在控制台输出。

private Thread t = new Thread(this);

public SelfManaged() {

t.start();

}

public String toString(){

return Thread.currentThread().getName() + "("+coutdown+")";

}

@Override

public void run() {

while(true){

System.out.println(this);

if(--coutdown == 0){

return;

}

}

}

public static void main(String[] args){

for(int i=0;i<5;i++){

new SelfManaged();

}

}

}

java构造函数中启动线程_通过构造器启动线程的实现方式及其缺点记录。相关推荐

  1. java构造函数中启动线程_java-为什么不在构造函数中启动线程? 如何终止?

    java-为什么不在构造函数中启动线程? 如何终止? 我正在学习如何在Java中使用线程. 我写了一个实现Runnable的类,以同时运行到另一个线程. 主线程处理侦听串行端口,而第二个线程将处理向同 ...

  2. Shell-通过shell启动Java类中的main方法 + 通过Shell启动jar包

    文章目录 概述 shell启动Java类中的main方法 启动脚本分析 启动脚本 shell启动jar包 概述 Java程序 运行在linux主机上, 通过shell脚本启动为进程. Java程序中 ...

  3. java声明arraylist,在java构造函数中声明ArrayList

    我正在研究一个项目,并且我被教导在构造函数中实例化变量.我在使用ArrayList思想时遇到了一些麻烦.您能否提出一些最佳实践,我是否需要使用实例变量定义ArrayList,或者我可以在构造函数中执行 ...

  4. java窗体中添加图片_在java窗体程序中添加图片的方法

    在java窗体程序中添加图片的方法 发布时间:2020-06-16 11:24:13 来源:亿速云 阅读:148 作者:Leah 这篇文章主要为大家详细介绍了在java窗体程序中添加图片的方法,图文详 ...

  5. java构造函数可以抛出异常吗_关于java:使构造函数抛出异常是一种好习惯吗?...

    本问题已经有最佳答案,请猛点这里访问. 让构造函数抛出异常是一个好的实践吗?例如,我有一个类Person,我将age作为它的唯一属性.现在我提供的课程是 class Person{ int age; ...

  6. 不属于JAVA类中的变量_在Java中,不属于整数类型变量的是( )。_学小易找答案...

    [单选题]整型数据类型中,需要内存空间最少的是( ). [单选题]下列语句序列执行后,i的值是( ). int i=16; do { i/=2; } while( i > 3 ); [填空题]布 ...

  7. java分页中显示更多_早期更多失败– Java 8

    java分页中显示更多 快速失败或早期失败是一种软件工程概念,旨在通过在不应该发生的事情发生时立即停止执行来防止复杂问题的发生. 在之前的博客文章和演示中,我将详细介绍这种方法的优点,在此博客文章中, ...

  8. 去掉java文件中的注释_利用JavaParser去除java文件中的注释

    利用JavaParser去除java文件中的注释 个人博客:记录一下在项目实施过程中的一些点 情景回顾 之前项目有个需求,就是去掉.java文件中的所有注释,常用的方法是用正则匹配.然而在网络上查找到 ...

  9. java文件中获取创建日期_如何在Java中获取文件的上次修改日期

    java文件中获取创建日期 Sometimes we need to get the file last modified date in Java, usually for listeners li ...

最新文章

  1. c语言随机迷宫生成方法,[原创]递归随机迷宫生成算法详解
  2. matlab 不单调 插值,三组无关数据进行MATLAB画三维图不采用插值的方法该怎么办...
  3. 容器的进程与namespace、rootfs
  4. window下安装好postgreSQL 9.3用cmd命令进入数据库(搞的我这个菜鸟只剩半条命)...
  5. java ref object_深入探讨 java.lang.ref 包
  6. 44 岁的微软下一步是什么?
  7. blogic-io.xml文件中的出力属性和output.javabean文件中的属性需要一一对应
  8. c++ 调用labview_Namisoft解析基于Labview的自动化精密阻抗分析系统
  9. python自动答题助手_头脑王者python答题助手
  10. origin画已知函数曲线_20+实用origin技能,带你用技巧画出完美曲线!
  11. idea debug collecting 卡死
  12. 成功解决TypeError: can‘t multiply sequence by non-int of type ‘float‘
  13. 腾讯云服务器公网流量是如何计算的?出流量还是入流量?
  14. 贝宝年报解读:是谁贷走了4.3亿美元?
  15. VUE优秀UI组件库(PC和Mobile)
  16. Search For Free —— 新闻爬虫及爬取结果的查询网站
  17. Multicore Navigator (CPPI):Notify end of QM interrupt
  18. vijos 搭建双塔
  19. 万达VS银泰 谁是最后的赢家?
  20. 高三女生因高中数学知识的数列解题技巧没掌握与梦想大学失之交臂

热门文章

  1. Android运行时权限,设置帮助类BaseActivity;电话权限,短信权限,
  2. chmod命令文件权限属性设置(linux/cygwin)
  3. 群同态基本定理证明_自由群的定义及相关
  4. 使用程序简单查询IP地址
  5. Numpy的使用方法
  6. python能做哪些方面的准备_学习pyhton需要做哪些准备工作
  7. 机器视觉——棱镜的妙用
  8. Integration between SharePoint 2013 and CRM 2013 (On-Premise)
  9. redis的info
  10. js中的浅拷贝深拷贝深入理解