2 创建线程的几种方式

创建线程的几种方式

方式1 重写Thread中的run方法

//方式一 重写Thread中的run方法
public class CreateThread1 {
   public static void main(String[] args) {
       //指定线程名称subThread0
       Thread t = new Thread("subThread0"){
           @Override
           public void run(){
               System.out.println("subThread0 running");
           }
       };

       //运行创建的线程subThread0
       t.start();
       System.out.println("main running");
   }
}

方式2 实现Runnable接口中的run方法

//方式2 实现Runnable接口中的run方法,配合Thread
public class CreateThread2 {
   public static void main(String[] args) {
		//任务对象
       Runnable runnable = new Runnable() {
           @Override
           public void run() {
               System.out.println("runnable running");
           }
       };
		//线程对象
       Thread t = new Thread(runnable);
       //运行创建的线程
       t.start();

       System.out.println("main running");
   }
}

//方式2 lambda简化实现
public class CreateThread3 {

   public static void main(String[] args) {
		//lambda简化
       Runnable runnable = () -> {
           System.out.println("subThread running");
       };

       Thread t = new Thread(runnable);
       t.start();

       System.out.println("主线程在运行");
   }
}

方式3 实现FutureTask接口中的call方法

//方式3 实现FutureTask接口中的call方法
public class CreateThread4 {
   public static void main(String[] args) throws ExecutionException, InterruptedException {

       //FutureTask实现了RunnableFuture接口,RunnableFuture接口中继承了Runnable, Future接口
       //泛型为call方法返回的类型
       FutureTask<Integer> task = new FutureTask(new Callable<Integer>() {
           @Override
           public Integer call() throws Exception {

               System.out.println("subTread running");
               //线程睡眠1s
               Thread.sleep(1000);
               return 1000;
           }
       });

       Thread t1 = new Thread(task, "t1");
       t1.start();
       //FutureTask的方式,可以得到call()方法的返回值,通过FutureTask中的get()方法得到
       //主线程会阻塞
       Integer res = task.get();
       System.out.println(res);

       System.out.println("main running");
   }
}

posted @   渺阴丶  阅读(4)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示