创建多线程的几种方法,thread创建多线程
线程的创建方式
总结一下多线程的创建方式,多线程的实现一共四种方法,接下来将详谈一下创建的方式
1、继承线类,而后覆写运行()方法
2、实现可追捕的接口,而后覆写运行()方法
3、实现请求即付的接口,而后覆写打电话方法
4、线程池(后面专门说,因为较复杂)
注意:无论使用哪种方式创建线程,启动线程一律使用Thread类提供的start()方法。
1.继承Thread类覆写run方法
类神话故事扩展线程{
私有字符串标题;
私有int票=20;
公共MyThread(字符串标题){
this.title=标题
}
public void run() { //放每个线程的子任务
而(票证0) {
System.out.println(当前线程为标题,还剩下车票-票);
}
}
}
公共类ThreadTest {
公共静态void main(String[] args) {
MyThread myThread1=新的MyThread(黄牛a’);
神话线索神话线索2=新的MyThread(黄牛b’);
MyThread myThread3=新的MyThread(黄牛c’);
流言1。start();
流言2。start();
流言3。start();
}
}2.实现Runnable接口覆写run方法
MyRunnable类实现可运行{
@覆盖
公共无效运行(){
for(int I=0;i 10i ){
系统。出去。println(线程。当前线程().getName()、I= I);
}
}
}
公共类RunnableTest {
公共静态void main(String[] args) {
runnable runnable=new my runnable();//向上转型
新线程(可运行,线程a’).start();//设置线程名字
新线程(可运行)。start();//没有设置线程名字,则是系统默认从线程-(0,1,2.)
线程thread1=新线程(runnable);
thread1.setName(线程b’);//调用集合名称()设置名字
线程1。start();
}
}这里呢顺便介绍了线程名字的创建3种:
(1)在括号后直接加名字
(2)调用集合名称()设置名字
(3)不设置名字,则是系统默认从线程-(0,1,2.)
3.实现Callable接口覆写callV方法
MyCallable类实现可调用字符串{
私有int票=20;
@覆盖
公共字符串调用()引发异常{
而(票证0){
系统。出去。println(线程。当前线程().getName()还剩下车票-票);
}
返回票卖完了,再见;
}
}
公共类CallableTest {
公共静态void main(String[] args)引发ExecutionException、InterruptedException {
//产生请求即付的对象
my callable my callable=new my callable();
//产生未来任务对象
未来任务未来任务=新的未来任务(我的可调用);
螺纹螺纹=新线程(未来任务);
线程。start();
系统。出去。println(未来任务。get());//接收请求即付的对象的返回值
}
}1.先产生请求即付的对象
2.产生未来任务对象
3.创建线传入未来任务对象
4.接收请求即付的接口的返回值是将来的中获取()方法
三个创建线程的方式比较
1.继承线类有单继承局限,相对而言实现可追捕的接口更加灵活,并且线类本身也实现了可追捕的接口辅助真实线程类
2.实现可追捕的接口可以更好的实现程序共享的概念
3.请求即付的接口就是需要有返回值时用到
以上内容若有明显错误请指出,不胜感激。谢谢!
更多相关内容请访问服务器端编程语言(专业超文本预处理器的缩写)中文网:JAVA视频教程以上就是多线程-线程的创建的详细内容,更多请关注我们其它相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。