进程:一个正在执行的程序。
线程:就是进程中一个独立的控制单元,线程在控制进程的执行,一个进程中至少有 一个线程。
主线程:JVM启动的时候会有一个进程java.exe,该进程中至少有一个负责java程序的执行
而且这个线程运行的代码存在于main方法中,该线程称之位主线程。
创建线程的方式有两种:
方法一:
1.定义类继承Thread
2.复写Thread类中的run方法
目的;将自定义代码存储在run方法中,让线程运行
3.调用线程的start方法
该方法有两个作用:启动线程,调用run方法(存储要执行的代码)
问题1:为什么要覆盖run方法呢?
Thread类,对多线程进行了描述。多线程的每个线程要运行的代码都在Thread类中run()方法中,
我们继承了Tread类,想运行自定义的线程,就必须要有自己的代码。而自己的代码只有放在run()中
才可以被当做线程运行。所以只有覆盖run()方法。
方法二:步骤;
1.定义类实现Runnble接口
2.覆盖Runnable接口中的run方法
3.通过Thread类建立线程对象
4.将Runnble接口的子类对象作为实际参数传递给Thread类的构造函数;
为什么要将Runnable接口的子类对象传递给Thread的构造函数呢?
因为,Thread类要运行自定义run()的方法,而自定义的run方法所属的对象是Runnable接口的子类对象
Thread的构造函数可以接收Runnable的子类。所以要让线程去执行我们自己的run方法,就将run()所属的
对象传入。然后Thread会去调用对象中的run(),当然这就不是我们要管的了。
5.调用Thread类的start方法开启线程
原文地址:http://www.cnblogs.com/heimaprogramer/p/3733239.html