码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • java创建线程的3种方式


    方法一,直接使用 Thread

    import lombok.extern.slf4j.Slf4j;
    
    @Slf4j(topic = "c.Test1")
    public class Test1CreateThread {
        public static void main(String[] args) {
            Thread t = new Thread(){
                @Override
                // run 方法内实现了要执行的任务
                public void run() {
                    log.debug("hello");
                }
            };
            t.setName("t1");
            t.start();
    
            log.debug("hi");
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    方法二,使用 Runnable 配合 Thread
    把【线程】和【任务】(要执行的代码)分开
    ● Thread 代表线程
    ● Runnable 可运行的任务(线程要执行的代码)

    import lombok.extern.slf4j.Slf4j;
    
    @Slf4j(topic = "c.Test1")
    public class Test2CreateThread {
        public static void main(String[] args) {
            Runnable runnable = new Runnable() {
                public void run(){
                    // 要执行的任务
                    log.debug("aaaa");
                }
            };
            // 创建线程对象
            Thread t = new Thread( runnable,"threadName");
            // 启动线程
            t.start();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    小结
    ● 方法1 是把线程和任务合并在了一起,方法2 是把线程和任务分开了
    ● 用 Runnable 更容易与线程池等高级 API 配合
    ● 用 Runnable 让任务类脱离了 Thread 继承体系,更灵活

    方法三,FutureTask 配合 Thread

    import lombok.extern.slf4j.Slf4j;
    
    import java.util.concurrent.ExecutionException;
    import java.util.concurrent.FutureTask;
    
    @Slf4j(topic = "c.Test1")
    public class Test3CreateThread {
        public static void main(String[] args) throws ExecutionException, InterruptedException {
            FutureTask<Integer> task = new FutureTask<>(()->{
                log.debug("hello");
                return 100;
            });
            new Thread(task,"t3").start();
            Integer result = task.get();
            log.debug("结果是{}",result);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
  • 相关阅读:
    【数学模型】TOPSIS
    SVG/CSS路径动画
    SpringBoot整合Groovy示例
    【redis】ssm项目整合redis,redis注解式缓存及应用场景,redis的击穿、穿透、雪崩的解决方案
    AIGC启示录:深度解析AIGC技术的现代性与系统性的奇幻旅程
    Flink之常用处理函数
    【CVE-2023-4357】Chrome-XXE 任意文件读取漏洞复现及原理解析
    VsCode密钥链接远程服务器
    SiR-PEG4-alkyne 硅-罗丹明-四聚乙二醇-炔基 | SIR小分子荧光染料
    IDOC的状态
  • 原文地址:https://blog.csdn.net/qq_38327117/article/details/132841704
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号