系列三、创建线程的方式

news/2024/5/20 5:47:37 标签: JUC

一、继承Thread

/**
 * @Author : 一叶浮萍归大海
 * @Date: 2023/11/20 9:39
 * @Description: 创建线程的第一种方式:继承Thread
 */
public class CreateThreadDemo1 extends Thread {

    @Override
    public void run() {
        for (int i = 1; i <= 100; i++) {
            System.out.println(Thread.currentThread().getName() + i);
        }
    }

    public static void main(String[] args) {
        System.out.println("CreateThreadDemo1 main =================>");
        CreateThreadDemo1 t1 = new CreateThreadDemo1();
        CreateThreadDemo1 t2 = new CreateThreadDemo1();
        CreateThreadDemo1 t3 = new CreateThreadDemo1();

        t1.setName("aa");
        t2.setName("bbbbbb");
        t3.setName("ccccccccccccccccc");

        t1.start();
        t2.start();
        t3.start();
    }

}

二、实现Runnable

/**
 * @Author : 一叶浮萍归大海
 * @Date: 2023/11/20 9:39
 * @Description: 创建线程的第二种方式:实现Runnable
 */
public class CreateThreadDemo2 implements Runnable {

    @Override
    public void run() {
        for (int i = 1; i <= 100; i++) {
            System.out.println(Thread.currentThread().getName() + i);
        }
    }

    public static void main(String[] args) {
        System.out.println("CreateThreadDemo2 main =================>");
//        CreateThreadDemo2 thread = new CreateThreadDemo2();
//        Thread t1 = new Thread(thread, "aa");
//        Thread t2 = new Thread(thread, "bbbbbb");
//        Thread t3 = new Thread(thread, "ccccccccccccccccc");
//
//        t1.start();
//        t2.start();
//        t3.start();

        new Thread(() -> {
            for (int i = 1; i <= 100; i++) {
                System.out.println(Thread.currentThread().getName() + i);
            }
        }, "aa").start();

        new Thread(() -> {
            for (int i = 1; i <= 100; i++) {
                System.out.println(Thread.currentThread().getName() + i);
            }
        }, "bbbbbb").start();

        new Thread(() -> {
            for (int i = 1; i <= 100; i++) {
                System.out.println(Thread.currentThread().getName() + i);
            }
        }, "ccccccccccccccccc").start();
    }

}

三、实现Callable

/**
 * @Author : 一叶浮萍归大海
 * @Date: 2023/11/20 9:39
 * @Description: 创建线程的第二种方式:实现Callable
 */
public class CreateThreadDemo3 implements Callable<Integer> {

    @Override
    public Integer call() throws Exception {
        int sum = 0;
        for (int i = 1; i <= 100; i++) {
            sum += i;
        }
        return sum;
    }

    public static void main(String[] args) {
        CreateThreadDemo3 thread = new CreateThreadDemo3();
        FutureTask<Integer> futureTask = new FutureTask<>(thread);
        new Thread(futureTask, "A").start();
        new Thread(futureTask, "B").start();
        new Thread(futureTask, "C").start();

        try {
            Integer result = futureTask.get();
            System.out.println(result);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

四、线程池


http://www.niftyadmin.cn/n/5196389.html

相关文章

Python实现双进程:防止单点故障的深度解析

更多Python学习内容&#xff1a;ipengtao.com 大家好&#xff0c;我是涛哥&#xff0c;今天为大家分享 Python实现双进程&#xff1a;防止单点故障的深度解析&#xff0c;文章2800字&#xff0c;阅读大约10分钟&#xff0c;大家enjoy~~ 在分布式系统中&#xff0c;确保系统的高…

第八部分:JSP

目录 JSP概述 8.1&#xff1a;什么是JSP&#xff0c;它有什么作用&#xff1f; 8.2&#xff1a;JSP的本质是什么&#xff1f; 8.3&#xff1a;JSP的三种语法 8.3.1&#xff1a;jsp头部的page指令 8.3.2&#xff1a;jsp中的常用脚本 ①声明脚本&#xff08;极少使用&#xf…

MySQL 8.0:性能优化与新功能

引言 MySQL 8.0是MySQL数据库管理系统的最新主要版本&#xff0c;带来了许多性能优化和新功能。本博客将探讨MySQL 8.0的性能提升以及一些使用技巧&#xff0c;助力你更好地利用这一强大的数据库系统。 新特性概览 MySQL 8.0相对于先前版本&#xff08;如MySQL 5.7及更早版本&a…

如何提⾼webpack的打包速度?

要提高Webpack的打包速度&#xff0c;可以尝试以下几种方法&#xff1a; 1&#xff1a;使用最新版本的Webpack&#xff1a; 确保使用的是最新版本的Webpack&#xff0c;因为每个版本都会带来性能改进和优化。 2&#xff1a;优化Webpack的配置&#xff1a; 检查Webpack配置文件…

深度学习中对抗生成网络GAN背后的数学原理

引言 GAN的风暴席卷了整个深度学习圈子&#xff0c;任何任务似乎套上GAN的壳子&#xff0c;立马就变得高大上了起来。那么&#xff0c;GAN究竟是什么呢&#xff1f; GAN的主要应用目标&#xff1a; 生成式任务&#xff08;生成、重建、超分辨率、风格迁移、补全、上采样等&a…

力扣labuladong——一刷day42

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、力扣222. 完全二叉树的节点个数 前言 计算二叉树的节点个数&#xff0c;计算满二叉树的节点个数&#xff0c;计算完全二叉树的节点个数 一、力扣222. 完全…

everything的高效使用方法

目录 前言1 everything的简单介绍2 常用搜索3 语法搜索4 正则表达式搜索5 服务器功能 前言 本文介绍everything软件的高效使用方法&#xff0c;everything是一款在系统中快速搜索文件的软件&#xff0c;能够帮助人们快速定位需要查找的文件。首先介绍everything软件的作用和使…

Java中锁的深入理解

目录 对象头的理解 Monitor&#xff08;锁&#xff09; 锁类型 偏向锁 偏向锁的优化机制 轻量级锁 重量级锁 对象头的理解 在32位Java虚拟机中普通对象的对象头是占用8个字节&#xff0c;其中4个字节为Mark Word。用来存储对象的哈希值&#xff0c;对象创建后在JVM中的…