线程的创建与应用
线程(thread)是操作系统中能够进行运算调度的最小单位,它包含在进程中,是进程中的实际运作单位。由此可知,在一个程序中可以有多个线程,我们可以通过Windows操作系统的任务管理器进行查看。
何时使用多线程技术?
当一个程序需要有多个部分进行并发执行时,我们就可以使用多线程技术,如:定义两个人进行赛跑。在此,我们学习Java中多线程的创建与应用。
创建线程的方法
创建线程的方法有两种,一种是继承Thread类,一种是实现Runnable接口。
一、继承Thread类
步骤:
1. 定义一个类继承Thread类。
2. 覆盖Thread类中的run()方法,将要执行的代码写入run()方法中。
3. 创建Thread类的子类对象,创建线程。
4. 调用start方法开启线程并调用run方法执行。
格式如下:
class Student extends Thread{
public void run(){
System.out.println("Study!");
}
}
class ThreadDemo{
public static void main(String[] args){
Thread t1 = new Thread();
Student stu = new Student();
stu.start();
}
}
上面的一段程序打印输出:Study!。
一、实现Runnable接口
步骤:
1. 定义类并实现Runnable接口。
2. 覆盖run()方法,把要使用线程执行的代码写入run()方法中。
3. 通过Thread类创建线程对象,并将Runnable接口的子类对象作为Thread类的构造函数进行传递。
4. 调用start()方法开启线程。
格式如下:
class Student implements Runnable{
public void run(){
System.out.println("Study!");
}
}
class ThreadDemo{
public static void main(String[] args){
Student stu = new Student();
Thread t1 = new Thread(stu);
t1.start();
}
}
上面的一段程序打印输出:Study!。
哪种方法更好?
两种方法都可以实现线程的创建,但是在实际开发中更多的是使用实现Runnable接口这种方法。
原因:Java语言是单继承语言,如果一个类继承Tread类,就没办法继承其他的类,如上面的演示代码,如果存在一个Worker类和Student类共同向上抽象出Person类,则继承Tread类实现多线程的方法将没办法实现,而实现Runnable接口的方法可以实现,代码如下:
class Student extends Person implements Runnable{
public void run(){
System.out.println("Study!");
}
}