• java多线程编程(学习笔记)入门


    一、多线程创建的三种方式

    (1)通过继承Thread本身

     (2)通过实现runnable接口

    (3)通过 Callable 和 Future 创建线程

    其中,前两种不能获取到编程的结果,第三种能获取到结果

    二、常见的成员方法

    方法名称说明
    String getName()返回此线程的名称
    void setName(String name)设置线程的名字(构造方法也可以设置名字)
    static Thread currentThread()获取当前线程的对象
    static  void sleep(long time)让线程休眠指定的时间,单位为毫秒
    setPriority(int newPriority)设置线程的优先级
    final int getPriority()获取线程的优先级
    final void setDaemon(boolean on)设置为守护进程

    public static void yield()

    出让线程/礼让线程
    public static void join()插入线程/插队线程 

    构造方法不能继承

    守护线程:当其他的非守护线程执行完毕之后,守护线程会陆续结束

    三、线程的生命周期

    四、线程安全问题

    (1)同步代码块

     把操作共享数据的代码锁起来

    格式:

    //锁对象,一定要是唯一的

    static Object obj = new Object();

    synchronized(锁){

    操作共享数据的代码

    }

    特点一:锁默认打开,有一个线程进去了,锁自动关闭

    特点二:里面的代码全部执行完毕,线程出来,锁自动打开

    (2)同步方法

    格式:

    修饰符 synchronized 返回值类型 方法名(方法参数){

    }

    特点一:同步方法是锁住方法里面所有的代码

    特点二:锁对象不能自己指定

    非静态:this

    静态:当前类的字节码文件对象

    StringBuilder 和StringBuffer

    单线程用一,多线程用二

    (3)lock锁

    lock实现提供比使用synchronized方法和语句可以获得更广泛的锁定操作

    lock提供了获得锁和释放锁的方法

    void lock():获得锁

    void unlock():释放锁

    Lock是接口不能直接实例化,这里采用它的实现类ReentrantLock来实例化

    ReentranLock的构造方法

    ReentrantLock():创建一个ReentrantLock的实例

  • 相关阅读:
    2022 - 8 洛谷
    Win10系统备份的方法和步骤
    SpringMVC | SpringMVC中的 “数据绑定”
    用VS Code运行C语言(安装VS Code,mingw的下载和安装)
    一篇学会JUC、JVM 吊打面试官!
    优酷弹幕穿人「渲染技术」揭秘
    scroll-view 实现滑动分类
    5.(地图数据篇)倾斜摄影OSGB转3DTile,cesiumLab(供Cesium使用)
    Feign Client端redis缓存设计与实现
    亚商投资顾问 早餐FM/1123 加快构建与国际相衔接的金融制度体系和监管模式
  • 原文地址:https://blog.csdn.net/qq_63499305/article/details/136318636