Java多线程的实现方式详解

 更新时间:2023年08月26日 09:30:22   作者:not coder  
这篇文章主要介绍了Java多线程的实现方式详解,线程就是进程中的单个顺序控制流,也可以理解成是一条执行路径,java中之所以有多线程机制,目的就是为了提高程序的处理效率,需要的朋友可以参考下

Java多线程的实现

在java语言中:

线程A和线程B,堆内存和方法区内存共享。

但是栈内存独立,一个线程一个栈。

1. 最简单的线程实现

new Thread() {
            @Override
            public void run() {
                System.out.println("线程开始了");
            }
        }.start();

2. Runnable 线程实现

        Runnable runnable = new Runnable() {
            @Override
            public void run() {
                System.out.println("runnable 线程开始了执行");
            }
        };
        Thread thread = new Thread(runnable);
        thread.start();

在第二种方式中,Thread 传入的参数不为空,会直接调用 Thread 传入参数的 run 方法,本质上以上两种方法没有区别

在第二种方式的好处是,runnable 可以重用

3. ThreadFactory 线程实现

ThreadFactory threadFactory = new ThreadFactory() {
            AtomicInteger count  = new AtomicInteger(0);
            @Override
            public Thread newThread(Runnable r) {
                return new Thread(r, "Thread-" + count.incrementAndGet());
            }
        };
        Runnable runnable = new Runnable() {
            @Override
            public void run() {
                System.out.println(Thread.currentThread().getName() + "线程开始执行");
            }
        };
        Thread thread = threadFactory.newThread(runnable);
        thread.start();
        Thread thread1 = threadFactory.newThread(runnable);
        thread1.start();

但在主流方式中,以上都不推荐使用,主要的原因是,线程的管理不方便,造成线程混乱等现象

到此这篇关于Java多线程的实现方式详解的文章就介绍到这了,更多相关Java多线程的实现内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 解决javaBean规范导致json传参首字母大写将永远获取不到问题

    解决javaBean规范导致json传参首字母大写将永远获取不到问题

    这篇文章主要介绍了解决javaBean规范导致json传参首字母大写将永远获取不到问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • 教你Spring如何使用三级缓存解决循环依赖

    教你Spring如何使用三级缓存解决循环依赖

    这篇文章主要介绍了Spring使用三级缓存解决循环依赖的过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • Java实现复原IP地址的方法

    Java实现复原IP地址的方法

    这篇文章主要介绍了Java实现复原IP地址的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • SpringBoot使用GTS的示例详解

    SpringBoot使用GTS的示例详解

    这篇文章主要介绍了SpringBoot使用GTS的示例详解,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-10-10
  • Java多线程中Callable和Future的解读

    Java多线程中Callable和Future的解读

    这篇文章主要介绍了Java多线程中Callable和Future的解读,Callable接口类似于Runnable,从名字就可以看出来了,但是Runnable不会返回结果,并且无法抛出返回结果的异常,而Callable功能更强大一些,被线程执行后,可以返回值,这个返回值可以被Future拿到,需要的朋友可以参考下
    2023-09-09
  • Spring 静态变量/构造函数注入失败的解决方案

    Spring 静态变量/构造函数注入失败的解决方案

    我们经常会遇到一下问题:Spring对静态变量的注入为空、在构造函数中使用Spring容器中的Bean对象,得到的结果为空。不要担心,本文将为大家介绍如何解决这些问题,跟随小编来看看吧
    2021-11-11
  • 无感NullPointerException的值相等判断方法

    无感NullPointerException的值相等判断方法

    当我们需要去判断一个 入参/查库 返回的开关变量(通常是个Integer类型的)时,常常会写如下的if-else判断语句。但又会为在生产环境看到的「NullPointerException」感到困扰,遇到这个问题如何处理呢,下面小编通过本文给大家详细讲解,需要的朋友参考下吧
    2023-02-02
  • IntelliJ IDEA 报错:找不到包或者找不到符号的问题及解决方案

    IntelliJ IDEA 报错:找不到包或者找不到符号的问题及解决方案

    这篇文章主要介绍了IntelliJ IDEA 报错:找不到包或者找不到符号的问题及解决方案,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • 深入了解Java方法的重载与重写

    深入了解Java方法的重载与重写

    在最初学习java的时候,人们都知道,java这种面向对象的语言,一共有三大特征,分别是:封装、继承、多态。多态的实现途径有三种:重写、重载、接口实现。本文就来为大家详细讲讲Java方法的重载与重写
    2022-07-07
  • 带你快速搞定Mysql优化

    带你快速搞定Mysql优化

    大部分的游戏数据库都是使用mysql ,所以今天今天大概聊一下对数据库的优化原则问题,都是基于InnoDB 引擎,希望你能在遇到同样的问题时能解决问题
    2021-07-07

最新评论