首页 > 编程语言 >Java中创建线程的几种方式

Java中创建线程的几种方式

时间:2024-12-14 19:10:12浏览次数:5  
标签:Java Thread thread System 几种 start currentThread 线程 public

盘点一下Java中创建线程的几种方式

一、继承Thread类,重写run()方法

public class MyThread extends Thread {

    @Override
    public void run() {
        System.out.println("my thread start " + Thread.currentThread().getName());
    }

    public static void main(String[] args) {
        System.out.println("main thread start "+Thread.currentThread().getName());
        MyThread myThread = new MyThread();
        myThread.start();
    }
}

二、实现Runnable接口,并重写run()方法

public class MyThreadRunnable implements Runnable {

    @Override
    public void run() {
        System.out.println("my thread start " + Thread.currentThread().getName());
    }

    public static void main(String[] args) {
        System.out.println("main thread start " + Thread.currentThread().getName());
        MyThreadRunnable myThreadRunnable = new MyThreadRunnable();
        Thread thread = new Thread(myThreadRunnable);
        thread.start();
    }
}

三、实现Callable接口,并重写call()方法

public class MyThreadCallable implements Callable<Integer> {
    @Override
    public Integer call() throws Exception {
        System.out.println("my thread start " + Thread.currentThread().getName());
        Integer ret = 0;
        for (int i = 0; i < 10; i++) {
            ret += i;
        }
        return ret;
    }

    public static void main(String[] args) throws ExecutionException, InterruptedException {
        MyThreadCallable myThreadCallable = new MyThreadCallable();
        FutureTask<Integer> futureTask = new FutureTask<>(myThreadCallable);
        Thread thread = new Thread(futureTask, "A");
        thread.start();
        int ret = futureTask.get();
        System.out.println("main thread ret = " + ret + " " + Thread.currentThread().getName());
    }
}

综上,类图关系如下:

 

标签:Java,Thread,thread,System,几种,start,currentThread,线程,public
From: https://www.cnblogs.com/damour-damocles/p/18606974

相关文章

  • 八股—Java基础(一)
    目录一、Java概述1、Java语言有哪些特点?2、JVM、JDK、JRE有什么区别?3、什么是跨平台性?原理是什么4、Java和C++有什么关系,它们有什么区别?5、JVM、JRE和JDK的关系是什么?6、什么是字节码?7、采用字节码的好处是什么?8、OracleJDK和OpenJDK的区别是什么?二、基础语法......
  • 牛客:请在给定的数组中查找一个特定的数字,如果该数字出现多次,请输出第一次出现的位置。
    链接:登录—专业IT笔试面试备考平台_牛客网来源:牛客网 题目描述请在给定的数组中查找一个特定的数字,如果该数字出现多次,请输出第一次出现的位置。输入描述:多组测试,每组第一行输入1个整数n(n<20)第二行输入n个整数第三行输入1个整数m输出描述:查找在第二行的n个整数......
  • 请统计一篇英文文章里所有小写字母各出现了几次。:JAVA
    链接:登录—专业IT笔试面试备考平台_牛客网来源:牛客网 题目描述请统计一篇英文文章里所有小写字母各出现了几次。输入描述:输入若干行,处理到文件结尾。字符总数<=100000输出描述:输出若干行,按字符序输出每种小写字符的出现次数,没有出现的字符不用输出。示例1输入a......
  • 2020年蓝桥杯省赛:JAVA
    代码:importjava.util.Scanner;publicclassT14{  publicstaticvoidmain(String[]args){    //创建一个Scanner对象用于从控制台读取输入    Scannerscanner=newScanner(System.in);         //读取输入字符串并将其......
  • Java中的 `CountDownLatch` 与 `CyclicBarrier`:区别、使用场景解析
    博主默语带您GotoNewWorld.✍个人主页——默语的博客......
  • javaweb前端部分
     一HTMLHTML(HyperTextMarkupLauguage):超文本标记语言1超文本:超越了文本的限制,比普通文本更强大。除了文字信息,还可以定义图片,音频,视频等内容。2标记语言:由标签构成的语言。HTML:标签都是预定义好的。例如:使用<a>展示超链接,使用<img>展示图片,<video>展示视频。HTML:......
  • Java——多线程(下)
    一(线程同步)1线程冲突和同步(有线程冲突——>通过线程同步解决——>并行化转换成线性化)(线程同步——>一种等待机制,多个需要同时访问此对象的线程进入这个对象的等待池形成队列,等待前面的线程使用完毕后,下一个线程再使用)1.1线程冲突可能动作一刚改完名字,时间片......
  • [2253]基于JAVA的玩具贸易智慧管理系统的设计与实现
    毕业设计(论文)开题报告表姓名学院专业班级题目基于JAVA的玩具贸易智慧管理系统的设计与实现指导老师(一)选题的背景和意义在当前全球经济一体化与信息化快速发展的背景下,各行各业的企业管理面临着前所未有的机遇与挑战。玩具贸易行业作为全球消费市场的重要组成部分,其业务......
  • [2339]基于JAVA的电商仓智慧管理系统的设计与实现
    毕业设计(论文)开题报告表姓名学院专业班级题目基于JAVA的电商仓智慧管理系统的设计与实现指导老师(一)选题的背景和意义选题背景与意义:随着电子商务行业的蓬勃发展,电商仓库作为商品流通的重要节点,其管理效率和智能化程度直接影响到整个电商业务链的运营效果和服务质量。......
  • 初学rabbitMQ中的生产者和消费者(JavaSE环境下)
    生产者:publicstaticvoidmain(String[]args)throwsIOException,TimeoutException{//1创建一个连接工厂ConnectionFactoryConnectionFactoryconnectionFactory=newConnectionFactory();//2设置rabbitMQ的ip地址connectio......