目录
引言
在日常开发工作中,多线程开发可以说是必备技能,好的程序员是一定要对线程这块有深入了解的,我是Java程序员,并且Java语言本身对于线程开发的支持是非常成熟的,所以今天我们就来入个门,学一下Java怎么创建线程。
创建线程的三种方式
Java创建线程主要有三种方式:
1、继承Thread类
2、实现Runnable接口
3、使用Callable和Future创建线程
下面分别讨论这三种方法的实现方式,以及它们之间的对比。
一、继承Thread类
步骤:
1、创建一个线程子类继承Thread类
2、重写run() 方法,把需要线程执行的程序放入run方法,线程启动后方法里的程序就会运行
2、创建该类的实例,并调用对象的start()方法启动线程
示例代码如下:
public class ThreadDemo extends Thread{ @Override public void run() { super.run(); System.out.println("需要运行的程序。。。。。。。。"); } public static void main(String[] args) { Thread thread = new ThreadDemo(); thread.start(); } }当运行main方法后,程序就会执行run()方法里面的内容,执行完之后,线程也就随之消亡,为什么一定要重写run()方法呢?
点击方法的源码后,发现Thread的run()方法其实什么都没有做
public void run() { if (target != null) { target.run(); } } public abstract void run();如果run()里没有需要运行的程序,那么线程启动后就直接消亡了。想让线程做点什么就必须重写run()方法。同时,还需要注意的是,线程启动需要调用start()方法,但直接调用run() 方法也能编译通过,也能正常运行:
public static void main(String[] args) { Thread thread = new ThreadDemo(); thread.run(); }只是这样是普通的方法调用,并没有新起一个线程,也就失去了线程本身的意义。
二、实现Runnable接口
1、定义一个线程类实现Runnable接口,并重写该接口的run()方法,方法中依然是包含指定执行的程序。
2、创建一个Runnable实现类实例,将其作为target参数传入,并创建Thread类实例。
3、调用Thread类实例的start()方法启动线程。
public class RunnableDemo implements Runnable{ @Override public void run() { System.out.println("我是Runnable接口......"); } public static void main(String[] args) { RunnableDemo demo =
