• 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的实例

  • 相关阅读:
    2023第十七届中国品牌节 | 每日互动刘宇分享大模型创新应用AITA智选人群工具
    【华为OD机试真题 python】最长广播效应【2022 Q4 | 200分】
    position的粘性定位
    Matlab | TCP通信_项目练习
    Java多线程探究【四线程协作】
    Windows环境下Qt Creator控制台输出中文乱码解决方法
    事件修饰符
    SPI、RS232、485、IIC通信协议详细总结
    明星为何会偷税?我国的交税政策是?
    【Perl】与【Excel】
  • 原文地址:https://blog.csdn.net/qq_63499305/article/details/136318636