首页 > 编程语言 >并发编程[1]_线程的创建

并发编程[1]_线程的创建

时间:2024-08-23 10:38:39浏览次数:14  
标签:Runnable log Thread 编程 并发 myThread 线程 public


介绍线程创建的两种基本的方法:继承Thread类和实现Runnable接口

1. 继承Thread类

  • 自定义类继承Thread类,重写 run() 方法
import org.slf4j.LoggerFactory;

/**
 * @author: yt
 * @date: 2021/4/12  22:09
 * @description: 创建Thread类继承Thread
 */
public class MyThread extends Thread{
    private static final Logger log = LoggerFactory.getLogger(MyThread.class);
    
    MyThread(String name){
        super(name);
    }

    @Override
    public void run() {
        log.debug("thread running...");
    }
}
public class Test1 {
    private static final Logger log = LoggerFactory.getLogger(Test1.class);

    public static void main(String[] args) {
        // myThread 是线程名称
        MyThread myThread = new MyThread("myThread");
        // 调用start方法启动线程,程序会执行run()方法
        myThread.start();
    }
}

或者直接用匿名内部类实现

public class Test1 {
    private static final Logger log = LoggerFactory.getLogger(Test1.class);

    public static void main(String[] args) {
        Thread myThread = new Thread("myThread") {
            @Override
            public void run() {
                log.debug("thread running...");
            }
        };
        myThread.start();
    }
}

调用start() 方法启动线程,线程启动后会执行run()方法。

运行结果:

2021-04-12 22:26:27  [myThread] - thread running...

2.实现Runnable接口

实现Runnable接口,重写run()方法,然后将Runnable实例丢给Thread类实例化,即可新建一个新的线程,一样是调用线程对象的start()的方法来启动线程。
java8 以后可以使用Lambda 表达式来 创建Runnable实例

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * @author: yt
 * @date: 2021/4/12  22:01
 * @description:
 */
public class Test1 {
    private static final Logger log = LoggerFactory.getLogger(Test1.class);

    public static void main(String[] args) {
        // 方法一:使用匿名内部类实现接口
        Runnable runnable1 = new Runnable() {
            @Override
            public void run() {
                log.debug("runnable1 running...");
            }
        };
        // Thread实例化,第一个参数为Runnable,第二个参数为线程名称
        Thread thread1 = new Thread(runnable1,"runnable1");
        // 启动线程
        thread1.start();

        // 方法二:使用Lambda表达式实现接口
        Runnable runnable2 = ()->{log.debug("runnable2 running...");};
        Thread thread2 = new Thread(runnable2,"runnable2");
        thread2.start();

        log.debug("main 方法");
    }
}

运行结果:

2021-04-12 22:36:32  [runnable1] - runnable1 running...
2021-04-12 22:36:32  [main] - main 方法
2021-04-12 22:36:32  [runnable2] - runnable2 running...

标签:Runnable,log,Thread,编程,并发,myThread,线程,public
From: https://www.cnblogs.com/Aeons/p/18375493

相关文章

  • 并发编程[3]_java线程的六种状态
    java线程状态1.操作系统进程的五种状态网上找了一张图:2.java线程的六种状态Thread类中getState()方法可以获取线程的状态,返回值是Thread类中的enum类型,取值有NEW,RUNNABLE,BLOCKED,WAITING,TIMED_WAITING,TERMINATED六种状态。java的线程状态将阻塞状态细分为BLOCKED,WAITING......
  • 大模型重塑软件架构·开启智能编程新纪元 |大模型书籍推荐
    在大模型时代洪流中,架构设计师就像时代舵手,不仅精通传统架构设计精髓,更要拥抱数据洪流与AI智能的浪潮。他们需具备前瞻视野,深入理解大模型技术如何重塑业务逻辑与系统架构,灵活运用云计算、微服务、自动化运维等现代技术栈,构建高可用、可扩展、智能化的系统架构。今天,小编......
  • 编程创建一个Cale计算类,在其中定义2个变量表示两个操作数,定义四个方法实现求和、差、
    1publicclassHomework06{2//编写一个main方法3publicstaticvoidmain(String[]args){45Calecale=newCale(2,10);6System.out.println("和="+cale.sum());7System.out.println("差="+cale.minus());......
  • 更懂你的文心快码 Inline Chat 全新上线,带来更加简化交互式的编程体验!
    更懂你的文心快码 InlineChat 全新上线,带来更加简化交互式的编程体验,充分适应程序员的编程和使用习惯。代码行内集成、智能生成、智能问答,无需跳出编辑区,AI就在你手边看,开发过程更流畅。那么Inlinechat如何助力实际开发场景?CoCo为大家展开讲讲。更懂你的文心快码......
  • bat编程
    .bat文件(批处理文件)是Windows系统中用于自动化执行一系列命令的脚本文件。下面是一些.bat文件的基本语法和常用命令:1.注释使用REM命令或@echooff后面的行(在@echooff生效的情况下)来添加注释。注释不会被执行,仅用于说明。REM这是一个注释@echooff::这也是一......
  • 干货-并发编程提高——线程池(十二)
    提到线程池就不得不说池化技术,那么什么是池化技术呢?池化技术能够减少资源对象的创建次数,提高程序的性能。特别是高并发下这种提高更加明显。使用池化技术缓存的资源有如下特点:对象的创建时间长对象创建需要大量资源对象创建后可被重复使用有没有点儿像共享单车?一个资......
  • 多线程入门Demo
    packagerun;importjava.util.ArrayList;importjava.util.List;importjava.util.concurrent.CompletionService;importjava.util.concurrent.ExecutionException;importjava.util.concurrent.ExecutorCompletionService;importjava.util.concurrent.Future;impo......
  • Scratch编程环境的暗色模式:探索可访问性的边界
    标题:Scratch编程环境的暗色模式:探索可访问性的边界Scratch,这个广受欢迎的图形化编程平台,由麻省理工学院媒体实验室开发,一直致力于为用户提供友好且易于访问的编程体验。随着用户对编程环境个性化需求的增长,Scratch的编程环境是否支持暗模式或可访问性选项,成为了编程教育领......
  • Scratch的诞生:开启编程世界的大门
    标题:Scratch的诞生:开启编程世界的大门Scratch,这款全球数百万儿童和青少年的编程启蒙工具,自诞生之日起就以其独特的图形化编程界面和强大的社区支持,引领着编程教育的潮流。本文将详细探讨Scratch的起源,它如何从一个教育项目成长为全球性的编程学习平台,并提供一些基础的Scrat......
  • Scratch创意工坊:启程编程与创造的无限旅程
    标题:Scratch创意工坊:启程编程与创造的无限旅程Scratch,这款由麻省理工学院媒体实验室开发的图形化编程工具,已经成为全球少儿编程教育的璀璨明星。它以独特的拖拽式编程积木,引领孩子们进入充满无限可能的编程世界。本文将详细介绍Scratch如何通过项目模板和示例代码,帮助初学......