写读书笔记的目的是为了更方便的向大家请教。
今天读李宁老师的用Thread类创建线程。前一篇教程提到了进程与线程,这一篇中只讲如何创建线程,并未谈进程如何创建。既然没谈,我估计就是由系统来创建了。我考虑系统执行程序是否是这样的:首先加载应用程序,也就是创建进程,然后把控制权交给应用程序,应用程序去创建线程。
这篇文章里是继承Thread 类来创建线程。创建线程时调用构造函数。然后用start()方法来启动线程,start()方法又会调用run()方法。我的疑问是为何要这样做,直接把事情在start()方法中做完不就可以了吗?何必再搞出个run()出来。是否是这样的原因:start()方法不方便被重载,所以搞个run()由用户来重载做些附加操作?
以下是原文的一段说明:
“从上面的输出结果可以看出,thread1和thread2的线程名都已经修改了,而thread3的线程名仍然为默认值:Thread-1。thread3的线程名之所以不是Thread-2,而是Thread-1,这是因为在026行已经指定了thread2的Name,因此,启动thread3时就将thread3的线程名设为Thread-1。因此就会得到上面的输出结果。”
- public static void main(String[] args)
- {
- thread_1 thread1 = new thread_1("thread1","MyThread1");
- thread_1 thread2 = new thread_1("thread2");
- thread_1 thread3 = new thread_1("thread3");
- thread2.setName("MyThread2");
- thread1.start();
- thread2.start();
- thread3.start();
- }
我觉得thread2的线程名是在第6行修改的,所以在第4行初始化的时候,系统已经给了它一个默认的名字。而thread1则在一开始就给了名字。所以系统并不给其取名字。所以,thread3的线程名应该是Thread-1.我觉得应该是这个原因,而并不是上面说的原因。