56java Java多线程实现(Runnable接口实现多线程)

87 阅读1分钟

Java多线程实现(Runnable接口实现多线程)

 Thread类的核心功能是进行线程的启动,直接继承Thread类造成问题的是单继承局限,java中另一种实现模式:Runnable接口。

 

先观察此接口定义:

@FunctionalinterfacePublic interface Runnable{Public void run();}接口存在着run()方法,与Thread相同,接口子类必须覆写run()方法。

 

 

二、范例

范例:利用Runnable定义线程主体类。

Class MyThread implements Runnable{//是一个线程的主体类Public MyThread(String title){this.title=title;}@Override

Public void run(){//所以的线程从此处开始执行for(int x=0;x<10;x++){System.out.printin(this.title+”,x=”+x);}}

 

MyThread类继承不再是Thread类,实现Runnable,解决了单继承,start()方法不被继承,需要关注Thread类提供的构造方法。

 

构造方法:

public Thread(Runnable target),接收Runnable接口对象。

 

范例:启动多线程。

Public class TestDemo{

Public static void main(String[]args){

MyThread mt1=new MyThread(“线程A”);

MyThread mt2=new MyThread(“线程B”);

MyThread mt3=new MyThread(“线程C”);

new Thread(mt1).start();

new Thread(mt2).start();

new Thread(mt3).start();

 

此时启动多线程,多线程的启动永远都是Thread类的start()方法。注意Runnable接口对象可以采用匿名内部类或Lambda表达式进行定义。

 

范例:通过匿名内部类定义操作。

Package cn.mldn.demo;Public class TestDemo{Public static void main(String{} args) {New Thread(new Runnable(){@Override Publicvoid run(){System.out.printin(“Hello World!”);}}).start();}}

 

范例:使用Lambda表达式。

Package cn.mldn.demo;Public class TestDemo{Public static void main(String{} args) {new Thread(()-> System.out.printin(“Hello World!”)).start();}}

 

在实际开发中,Runnable接口子类定义形式很少出现,以上操作做法最为常见。