读李宁老师的:Java多线程初学者指南(2):用Thread类创建线

写读书笔记的目的是为了更方便的向大家请教。

今天读李宁老师的用Thread类创建线程。前一篇教程提到了进程与线程,这一篇中只讲如何创建线程,并未谈进程如何创建。既然没谈,我估计就是由系统来创建了。我考虑系统执行程序是否是这样的:首先加载应用程序,也就是创建进程,然后把控制权交给应用程序,应用程序去创建线程。

这篇文章里是继承Thread 类来创建线程。创建线程时调用构造函数。然后用start()方法来启动线程,start()方法又会调用run()方法。我的疑问是为何要这样做,直接把事情在start()方法中做完不就可以了吗?何必再搞出个run()出来。是否是这样的原因:start()方法不方便被重载,所以搞个run()由用户来重载做些附加操作?

以下是原文的一段说明:

从上面的输出结果可以看出,thread1thread2的线程名都已经修改了,而thread3的线程名仍然为默认值:Thread-1thread3的线程名之所以不是Thread-2,而是Thread-1,这是因为在026已经指定了thread2的Name,因此,启动thread3时就将thread3的线程名设为Thread-1因此就会得到上面的输出结果。

Code:
  1. public static void main(String[] args)   
  2. {   
  3.     thread_1 thread1 = new thread_1("thread1","MyThread1");   
  4.     thread_1 thread2 = new thread_1("thread2");   
  5.     thread_1 thread3 = new thread_1("thread3");   
  6.     thread2.setName("MyThread2");   
  7.     thread1.start();   
  8.     thread2.start();   
  9.     thread3.start();   
  10. }  

我觉得thread2的线程名是在第6行修改的,所以在第4行初始化的时候,系统已经给了它一个默认的名字。而thread1则在一开始就给了名字。所以系统并不给其取名字。所以,thread3的线程名应该是Thread-1.我觉得应该是这个原因,而并不是上面说的原因。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值