黑马程序员技术交流社区

标题: 线程的小知识点 [打印本页]

作者: 云水禅心    时间: 2013-10-2 21:22
标题: 线程的小知识点
线程的小知识点      
                 进程:是一个正在执行的程序。系统创建的。
每一个进程执行都有一个执行顺序,该顺序就一个执行路径,或者叫作一个控制单元。
线程:就是进程中的一个独立的控制单元。线程在控制着进程的执行。
一个进程中至少有一个线程。
扩展:其实更细节说明jvm启动时不止一个启动线程,还有垃圾回收机制的线程。
如何在自定义的代码中定义一个线程呢?三步(在注释中)
Thread类中的run方法,用于存储线程要运行的代码。
class Demo extendsThread  //定义类继承Thread 类线程。
{
public void run()  //复写Thread中的run方法,将自定义代码存储在run方法中,让线程运行。
{
for(int x=0; x<60;x++)
System.out.println("demorun----"+x);
}
}
class ThreadDemo
{
public static voidmain(String[] args) //执行主线程的代码。
{
Demo d = new Demo();//创建好一个线程。
d.start(); // start 调用run方法启动一个线程。执行run中的代码。是调用底层,让控制单元去执行这个动作。
//d.run(); //仅仅是对象调用方法,而线程创建了却没有被运行。所以不能用这个。仅仅是封装线程要运行的代码
for(int x=0;x<60;x++)
System.out.println("HelloWorld---"+x);
}
}

作者: hyz123456    时间: 2013-10-2 23:27
本帖最后由 hyz123456 于 2013-10-2 23:30 编辑

创建线程的第二种方法:实现Runnable接口

步骤
1。定义类实现Runnable接口
2。覆盖Runnble接口中的run方法
        将要运行的代码存放在该run方法中
3。通过Thread建立线程对象。
4。将Runnable接口的子类对象作为实际参数传递给Thread的构造函数
        为什么要将Runnable接口的子类对象传递给Thread的构造函数?
        因为,自定义的run方法所属的对象是Runnbale接口的子类对象
        所以要让线程去指定对象的run方法,就必须明确该run方法所属对象
5。调用Thread类的start方法开启线程并调用Runnbale接口子类的run方法。
附上示例:
class ImpRunnable implements Runnable                                     //定义ImpRunnable子类对象实现Runnable
{
        
        public void run()                                                                 //覆盖Runnable中run方法
        {
                System.out.println("Runnable run"+Thread.currentThread().getName());
        }
}
class ThreadTest
{
        public static void main(String[] args)
        {
                Thread t = new Thread(new ImpRunnable());             //建立Thread线程并将ImpRunnable传入
                t.start();                                                                     //线程开启!
        }
}

实现方法好处:避免了单继承的局限性。在定义线程时,一般使用实现方式。
区别:
        继承Thread:线程代码存放Thread子类run方法中。
        实现Runnable:线程代码存放在接口的子类的run方法中。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2