Java编程开发创建线程的方式

Java编程开发创建线程的方式

实现多线程的3种方式

继承Thread类

看jdk源码可以发现,Thread类其实是实现了Runnable接口的一个实例,继承Thread类后需要重写run方法并通过start方法启动线程。

继承Thread类耦合性太强了,因为java只能单继承,所以不利于扩展。

实现Runnable接口

通过实现Runnable接口并重写run方法,并把Runnable实例传给Thread对象,Thread的start方法调用run方法再通过调用Runnable实例的run方法启动线程。

所以如果一个类继承了另外一个父类,此时要实现多线程就不能通过继承Thread的类实现。

实现Callable接口

通过实现Callable接口并重写call方法,并把Callable实例传给FutureTask对象,再把FutureTask对象传给Thread对象。它与Thread、Runnable最大的不同是Callable能返回一个异步处理的结果Future对象并能抛出异常,而其他两种不能。

示例代码

importjava.util.concurrent.Callable;

importjava.util.concurrent.FutureTask;

*Createdbybinzhangon2019/3/23.

publicclassTestThread{

staticclassThread1extendsThread{

@Override

publicvoidrun(){

System.out.println("Thread1running...");

}

}

staticclassThread2implementsRunnable{

@Override

publicvoidrun(){

System.out.println("Thread2running...");

}

}

staticclassThread3implementsCallable{

@SuppressWarnings("unchecked")

@Override

publicTcall()throwsException{

System.out.println("Thread3running...");

return(T)newString("hellocallable...");

}

}

publicstaticvoidmain(String[]args)throwsException{

Thread1t1=newThread1();

Threadt2=newThread(newThread2());

FutureTaskft=newFutureTask<>(new>());

Threadt3=newThread(ft);

t1.start();

t2.start();

t3.start();

System.out.println(ft.get());

}

}

输出

Thread1running...

Thread2running...

Thread3running...

hellocallable...

java编程语言从创建一直延续到现在,始终是大多数程序员追捧的编程语言之一。对于java语言的适应性以及实用性是不言而喻的。因此,IT的小白大部分也就选择了java编程的培训课程。西安java培训从基础开始授课,结合项目实操练习。

发表评论
留言与评论(共有 0 条评论)
   
验证码:

相关文章

推荐文章

'); })();