分享
2014年,美国NASDAQ成功上市;全国中心数量突破100家;2015年,推出少儿编程业务;全国中心数量突破150家;2016年,提出“因材施教、分级培优”教学模式;2017年,入选教育部产学合作协同育人项目实施企业;全国中心数量突破200家...
1.达内教育
2.千锋教育
3.天琥教育
4.汇众教育
5.中公IT
6.火星时代
7.万和教育
8.博雅环球教育
9.新猿IT
10.仑智教育
JAVA多线程实现方式都有哪些?
JAVA多线程实现方式主要有三种:继承Thread类、实现Runnable接口、使用ExecutorService、Callable、Future实现有返回结果的多线程。其中前两种方式线程执行完后都没有返回值,只有最后一种是带返回值的。如下:
1、继承Thread类实现多线程
继承Thread类的方法尽管被我列为一种多线程实现方式,但Thread本质上也是实现了Runnable接口的一个实例,它代表一个线程的实例,并且,启动线程的唯一方法就是通过Thread类的start()实例方法。start()方法是一个native方法,它将启动一个新线程,并执行run()方法。这种方式实现多线程很简单,通过自己的类直接extend Thread,并复写run()方法,就可以启动新线程并执行自己定义的run()方法。例如:
[java] view plain copypublic class MyThread extends Thread {
public void run() {
System.out.println("MyThread.run()");
}
}
在合适的地方启动线程如下:
[java] view plain copyMyThread myThread1 = new MyThread();
MyThread myThread2 = new MyThread();
myThread1.start();
myThread2.start();
2、实现Runnable接口方式实现多线程
如果自己的类已经extends另一个类,就无法直接extends Thread,此时,必须实现一个Runnable接口,如下:
[java] view plain copypublic class MyThread extends OtherClass implements Runnable {
public void run() {
System.out.println("MyThread.run()");
}
}
为了启动MyThread,需要首先实例化一个Thread,并传入自己的MyThread实例:
[java] view plain copyMyThread myThread = new MyThread();
Thread thread = new Thread(myThread);
thread.start();
事实上,当传入一个Runnable target参数给Thread后,Thread的run()方法就会调用target.run(),参考JDK源代码:
[java] view plain copypublic void run() {
if (target != null) {
target.run();
}
}
3、使用ExecutorService、Callable、Future实现有返回结果的多线程
ExecutorService、Callable、Future这个对象实际上都是属于Executor框架中的功能类。 这里面对该框架做了很详细的解释。返回结果的线程是在JDK1.5中引入的新特征,确实很实用,有了这种特征我就不需要再为了得到返回值而大费周折了,而且即便实现了也可能漏洞百出。
可返回值的任务必须实现Callable接口,类似的,无返回值的任务必须Runnable接口。执行Callable任务后,可以获取一个Future的对象,在该对象上调用get就可以获取到Callable任务返回的Object了,再结合线程池接口ExecutorService就可以实现传说中有返回结果的多线程了。
2018年,承接教育部“AI+智慧学习”项目,开启人工智能学院建设之路;全国中心数量突破300家;2019年,与百度深化合作,共同推进智能领域技术人才培养;2020年,三大学院成立,11大课程体系建立;与华为、Adobe签署全面合作协议;推出“达内十年服务计划”和“大内高手社区”
www.aixuew.cn All rights reserved 豫ICP备2022021264号
该文章由用户自行上传发布,如有侵权内容请及时联系我们删除。