启动线程的三种方式

更新时间:2023-07-23 04:01:28 阅读: 评论:0

启动线程的三种⽅式⽂章⽬录
总统大选前⾔
启动线程⼀共有三种⽅法:继承类,实现接⼝,匿名内部类。
⼀、启动线程的第⼀种⽅法:继承Thread类
start()⽅法的作⽤是启动⼀个分⽀线程,在JVM中开辟⼀个新的栈空间。
只要新的栈空间,myThread.start()瞬间就结束了,线程就启动成功了。
启动成功的线程会⾃动调⽤run⽅法,并且run⽅法在分⽀线的栈底部。
形形色色什么意思代码如下(⽰例):
public class Thread01  {
public static void main(String[] args){
//创建线程对象
MyThread myThread =new MyThread();
//启动线程
myThread.start();
//主线程
for(int i =0; i <100; i++){
System.out.println("main主线程--->"+ i);
}
}
}
class MyThread extends Thread{
@Override
public void run(){
for(int i =0; i <100; i++){
lilo的时间System.out.println("分⽀线程---->"+ i);
}
托业报名
}
}
⼆、启动线程的第⼆种⽅式:实现Runnable接⼝
代码如下(⽰例):
public class Thread02 {
public static void main(String[] args){
//创建线程对象
Thread thread = new Thread(new MyRunnable());
//启动线程
thread.start();
//主线程
for(int i =0; i <100; i++){
System.out.println("main主线程--->"+ i);
}
}
}
class MyRunnable implements Runnable{
@Override
public void run(){
for(int i =0; i <100; i++){
System.out.println("分⽀线程---->"+ i);
}
}
}
实现接⼝启动线程是最常⽤的⽅法
也可以使⽤匿名内部类的⽅式启动线程
代码如下(⽰例):
public class Thread03 {
public static void main(String[] args){
Thread thread = new Thread(new Runnable(){
@Override
public void run(){
for(int i =0; i <1000; i++){
System.out.println("分⽀线程-->"+ i);书名号的作用
}
}
});
//启动线程
thread.start();
//主线程
for(int i =0; i <1000; i++){
System.out.println("main主线程--->"+ i);
}
}
}
三、启动线程的第三种⽅式:实现Callable接⼝
import urrent.Callable;
import urrent.ExecutionException;
柚子的副作用import urrent.FutureTask;
/***
* 启动线程的第三种⽅法:实现Callable接⼝,重写call()⽅法
*/
public class ThreadTest04 {
public static void main(String[] args){
//创建⼀个“未来任务类”对象
FutureTask futureTask = new FutureTask(new Callable(){
@Override
public Object call() throws Exception {//call()⽅法相当与run()⽅法,⽐run⽅法好,有返回值                System.out.println("call mothed begin!");
王菲歌Thread.sleep(1000*10);
System.out.println("call mothed over!");
int x =100;
篮球赛策划int y =200;
return x + y;//⾃动装箱
}
});
//创建线程对象
Thread t = new Thread(futureTask);
//启动线程
t.start();
Object obj = null;
//获得分⽀线程返回值
try {
//get()⽅法的执⾏会导致主线程的阻塞
obj = ();
} catch (InterruptedException e){
e.printStackTrace();
} catch (ExecutionException e){
e.printStackTrace();
}
System.out.println("获得分⽀线程的返回值:"+ obj );
//如下的代码会等到分⽀线程执⾏结束后,才回到主线程中继续执⾏
System.out.println("Hello CSDN");
}
}

本文发布于:2023-07-23 04:01:28,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/1112056.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:线程   启动   主线   对象   实现   意思   报名
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图