• java 多线程


    一 什么是线程

           线程(thread)是一个程序内部的一条执行路径

            常用的main方法就是一条单独的执行路径

        如果程序中只有一条执行路径 那么这个程序就是单线程的程序

       多线程是什么

              多线程是指从软件上实现多条执行流程的技术

    Thread 类

         java是通过java.lang.Thread 类来表示 线程

         按照面向对象的思想 Thread类应该提供思想多线程的方式

    多线程实现的方法 一 继承thread类

    定义一个子类 mythread 继承线程类java.lang.Thread 重写run()方法

    创建MyThread 类的对象

     调用线程对象那搞的start()方法启动线程(启动后还是执行run方法)

    优缺点

       优点 编码简单

       缺点  线程类已经继承Thread 无法继承其他类 不利于扩展

    问题 

        1 为什么不直接调用run方法 而是调用start方法启动线程

             直接调用run方法会当成普通方法 此时还相当于单线程执行

             只用调用start方法才是启动一个新的线程

      2 把主线程任务凡在子线程之前

            这样主线程一直是先跑完的 相当于一个单线程的效果

    总结 

                继承thread类

                 重写run方法

                 创建线程对象

                  调用start方法启动线程

     多线程的实现方法二 实现Runnable 接口

          定义一个线程任务类 MyRunnable 实现Runnable 接口 重写run方法

         创建  MyRunnable 任务对象

          把MyRunnable 任务对象交给Thread处理

          调用线程对象的start方法启动线程

           

     方式二 优缺点

                 优点 线程任务类 只是实现接口 可以继续继承类和实现接口 扩展项强

                 缺点  编程多一层对象包装 如果线程有执行结果是不可以直接返回的

    总结

      

    1. 第二种方式是如何创建线程的?
    l 定义一个线程任务类 MyRunnable 实现 Runnable 接口,重写 run() 方法
    l 创建 MyRunnable 对象
    l MyRunnable 任务对象交给 Thread 线程对象处理。
    l 调用线程对象的 start() 方法启动线程
    2. 第二种方式的优点
    l 优点:线程任务类只是实现了 Runnale 接口,可以继续继承和实现。
    l 缺点:如果线程有执行结果是不能直接返回的。

    Thread 的常用方法

                  获取线程名称getName() 设置名称setName()  获取当前线程对象 currentthread()

     

     

     

     

     

     

     线程安全

               多个线程同时操作同一个共享资源的时候可能会出现业务安全问题 称之为线程安全问题

    线程安全问题出现的原因

              存在多线程并发

              同时访问共享资源

               存在修改共享资源

    线程同步

             线程同步的核心思想

              加锁 把共享的资源进行上锁 每次只能有一个线程进入访问完毕后解锁 然后洽谈线程才能进来

          同步代码块

                  作用 把出现线程安全问题的核心代码上锁i

                   原理 每次只能进入一个线程 执行完毕后自动解锁 其他线程才可以进来执行

                   关键字 synchronize(同步对象){

                        操作共享资源的代码(核心代码)

    }        

     

     

     

     

     

     

  • 相关阅读:
    Java面试突击
    硬实力+软实力!2023功能测试进阶之路!
    delete删除后怎么恢复文件?四种方法进行找回
    Rethinking Point Cloud Registration as Masking and Reconstruction论文阅读
    学习大数据,所需要的linux基础(1)
    c++常用函数所在头文件一览
    信息检索度量指标(MAP@N, P@N)
    zlMediaKit 4 buffer模块--buffer什么都能装&不只有send还有sendmsg/sendmmsg
    MySQL索引
    速卖通流量篇“如何通过粉丝营销引爆私域流量”
  • 原文地址:https://blog.csdn.net/qq_52153640/article/details/126610179