多线程(英语:multithreading),是指从软件或者硬件上实现多个线程并发执行的技术。
Java多线程是由JVM来实现,不必关心操作系统的调用问题。
假如我们要实现如下功能:
public class Test { public static void main(String[] args) { for(int i=0;i<100;i++){ //和尚念经100遍 System.out.println(i+"南无阿弥陀佛!"); } for(int i=0;i<100;i++){ //道士讲经100遍 System.out.println(i+"道可道、非常道!"); } } }
即和尚念经100遍和道士讲经100遍
传统方式我们只能等待一个人做完了,第二个人才能开始工作。而实际情况他们应该能够同时工作,且各干各的互不干扰。
于是这时我们就要使用多线程技术。
class HeShang extends Thread{ //继承Thread类 public void run(){ //把任务写进run方法里面 for(int i=0;i<100;i++){ System.out.println(i+"南无阿弥陀佛!"); } } } class DaoShi extends Thread{ public void run(){ for(int i=0;i<100;i++){ System.out.println(i+"道可道、非常道!"); } } } public class Demo { public static void main(String[] args) { HeShang heShang=new HeShang(); DaoShi daoShi=new DaoShi(); heShang.start(); daoShi.start(); } }
运行后如图:
刚才我们就实现了多线程
Java中多线程实现方式主要有两种(1)继承Thread类(2)实现Runnable接口
使用Runnable接口实现多线程
class HeShang implements Runnable{ public void run(){ for(int i=0;i<100;i++){ System.out.println(i+"南无阿弥陀佛!"); } } } class DaoShi implements Runnable{ public void run(){ for(int i=0;i<100;i++){ System.out.println(i+"道可道、非常道!"); } } } public class Demo { public static void main(String[] args) { HeShang heShang=new HeShang(); DaoShi daoShi=new DaoShi(); //要用Thread来启动线程,代理设计模式 Thread t1=new Thread(heShang); //Thread构造方法可接收Runnable类型,向上转型,自动完成 t1.start(); new Thread(daoShi).start(); //匿名对象 } }
因为Runnable接口没有run方法,所以实现Runnable接口的类(HeShang or DaoShi)没有start方法,但是Thread是有start方法的。
我们使用代理,首先Thread构造方法可接收Runnable类型
之后用Thread对象启动start方法。
也可以使用匿名对象一行代码完成。
运行后,也能够实现多线程,如图所示: