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

Java创建线程的三种方式

时间:2023-04-01 20:47:08浏览次数:39  
标签:Hello Java thread Thread public 线程 new 三种 class

创建线程的三种方式

1. 继承Thread类,重写run方法

public class MyThread extends Thread {
    public void run() {
        System.out.println("Hello from MyThread!");
    }
}

public class Main {
    public static void main(String[] args) {
        MyThread thread = new MyThread();
        thread.start();
    }
}

// 输出结果
Hello from MyThread!

2. 实现Runnable接口,实现run方法

public class MyRunnable implements Runnable {
    public void run() {
        System.out.println("Hello from MyRunnable!");
    }
}

public class Main {
    public static void main(String[] args) {
        Thread thread = new Thread(new MyRunnable());
        thread.start();
    }
}

// 输出结果
Hello from MyRunnable!

2. 使用Callable和Future创建有返回值的线程

import java.util.concurrent.Callable;
import java.util.concurrent.Future;
import java.util.concurrent.FutureTask;

public class MyCallable implements Callable<String> {
    public String call() {
        return "Hello from MyCallable!";
    }
}

public class Main {
    public static void main(String[] args) throws Exception {
        Callable<String> callable = new MyCallable();
        FutureTask<String> futureTask = new FutureTask<>(callable);
        Thread thread = new Thread(futureTask);
        thread.start();
        String result = futureTask.get();
        System.out.println(result);
    }
}

// 输出结果
Hello from MyCallable!

以上是Java创建线程的三种方式,分别使用了

  • 继承Thread类、
  • 实现Runnable接口、
  • 使用Callable和Future创建有返回值的线程。

通过这三种方式,我们可以灵活地创建多线程应用程序。

标签:Hello,Java,thread,Thread,public,线程,new,三种,class
From: https://www.cnblogs.com/ldh-0319/p/17279297.html

相关文章

  • java 中required_通过实例学习Spring @Required注释原理
    @Required注释应用于bean属性的setter方法,它表明受影响的bean属性在配置时必须放在XML配置文件中,否则容器就会抛出一个BeanInitializationException异常。下面显示的是一个使用@Required注释的示例。示例:让我们使EclipseIDE处于工作状态,请按照下列步骤创建一个......
  • java 中required_通过实例学习Spring @Required注释原理
    @Required注释应用于bean属性的setter方法,它表明受影响的bean属性在配置时必须放在XML配置文件中,否则容器就会抛出一个BeanInitializationException异常。下面显示的是一个使用@Required注释的示例。示例:让我们使EclipseIDE处于工作状态,请按照下列步骤创建一个......
  • 每日总结--2023/3/31(解决了数据库连接不正常的问题,完成了javaweb暂时的配置)
    今天耗费一天的时间总算是找到了问题所在.问题出在mysqlServlet的版本上。在重装系统前,我所装的mysqlSevlet版本是5.0左右的,所以连接数据库的驱动也是5.0,包括url,而在重装系统后我的mysqlSevlet版本是8.0以上的,所以用原来的语句是不正确的,要修改为8.0版本的才能够运行,同......
  • Java面向对象--接口和多态
    final关键字最终修饰符可以修饰类方法变量被final修饰后不能被继承重写二次赋值修饰类时该类不可以被继承修饰方法时该方法不能被重写修饰变量时,该变量只能赋值一次,不可以二次赋值是常量修饰引用变量时,地址值不能改变但对象中的属性值可以改变修饰成员变......
  • Java线程:wait()和notify()
    一、wait()和notify()含义二、标准代码示例创建两个线程Thread0和Thread1。代码实现:运行流程详解三、什么时候释放锁—wait()、notify()四、用生活故事讲懂线程的等待唤醒1.老王和老李(专家程序员):2.王哥和李哥(普通程序员):3.小王和小李(新手程序员):五、问题理解1、执行wait()的......
  • 别逛了,送你一份2023年Java核心篇JVM(虚拟机)面试题整理
    Java内存区域说一下JVM的主要组成部分及其作用?JVM包含两个子系统和两个组件,两个子系统为Classloader(类装载)、Executionengine(执行引擎);两个组件为Runtimedataarea(运行时数据区)、NativeInterface(本地接口)。●Classloader(类装载):根据给定的全限定名类名(如:java.......
  • 多线程
    内容什么是线程如何创建线程线程的调度线程的一个设计模式:生产消费者模型线程池线程集合对象(侧重点)一、什么是线程进程:运行中的程序才可以称为进程,一个程序一个进程。宏观并行,微观串行。线程:1.任何一个程序都至少拥有一个线程,即主线程。但是java程序默认有两个线......
  • C# 直接在子线程中对窗体上的控件操作是会出现异常
    https://www.bbsmax.com/A/MAzA8klpd9/ Form1里privatedelegatevoidDispMSGDelegate(intindex,stringMSG);publicvoidDispMsg(intiIndex,stringstrMsg){if(this.richTextBox1.InvokeRequired==false)......
  • 线程停止
    线程停止1.建议线程正常停止--->利用次数,不建议死循环2.建议使用标志位--->设置一个标志位3.不要使用stop或者destroy等过时或者JDK不建议使用的方法//测试stop//1.建议线程正常停止--->利用次数,不建议死循环//2.建议使用标志位--->设置一个标志位//3.不要使用stop或者dest......
  • 线程休眠
    模拟网络延时放大问题的发生性//模拟网络延时:放大问题的发生性publicclassTestSleepimplementsRunnable{//票数privateintticketNums=10;@Overridepublicvoidrun(){while(true){if(ticketNums<=0){......