吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 672|回复: 4
收起左侧

[学习记录] Java多线程基础知识

  [复制链接]
Kai1222 发表于 2022-4-14 23:18
Java多线程基础并发基础相关概念1.进程
  • 进程指的是正在运行的程序的实例
  • 进程是程序的一次执行过程,或是正在执行的程序
  • 是动态过程,有它自身的产生、存在和消亡的过程
2.线程
  • 线程是有进程创建的, 是进程的一个实体,
  • 线程是操作系统进行运算调度的最小单位,是进程的实际运行单位
  • 一个进程可以拥有多个线程
3.并发
  • 同一时刻多个任务交替执行(单核cpu实现的多任务就是并发)
4.并行
  • 同一个时刻,多个任务同时执行(多核cpu可以实现并行)
线程的基本使用创建线程
  • 继承Thread类
    Thread类本身就实现了Runnable接口
  • 实现Runnable接口
    实现Runnable接口更加适合多个线程共享一个资源的情况,且避免的单继承的限制

线程状态
  • NEW
    新建,尚未启动的线程处于此状态
  • RUNNABLE
    可运行,在Java虚拟机中执行的线程处于此状态
  • BLOCKED
    阻塞,被阻塞等待监视器锁定的线程处于此状态(未获得锁)
  • WAITING
    等待,等待另一个线程执行特定动作的线程处于此状态
  • TIMED_WAITING
    计时等待,等待另一个线程执行特定动作达到指定等待时间的线程处于此状态
  • TERMINATED
    终止,已退出的线程处于此状态


同步,线程的同步锁对象
  • ReentrantLock类
    var myblock = new ReentrantLock(); //锁对象,重入锁
    myblock.lock();
    try{
        do something
    } finally {
        myblock.unlock();
    }
   
    ReentrantLock(boolean fair) //公平锁,倾向于等待时间最长的线程
  • synchronized关键字
    //同步代码块
    synchronized (对象) { //得到对象锁才能操作代码块
        //需要同步的代码;
    }   
   
    //同步方法
    public synchronized void method() {
        //需要同步的代码
    }
    // 同步方法(非静态的)的锁可以是this(默认),也可以是其他对象(但要确保多线程的锁对象是同一个对象)
    // 同步方法(静态的)的锁为当前类本身 lei.class
    释放锁
  • 当前线程的同步方法、同步代码块执行结束
  • 当前线程执行同步代码块、同步方法中遇到break、return时
  • 当前线程执行同步代码块、同步方法中出现了未处理的Error或Exception,异常结束
  • 当前线程在同步代码块、同步方法中执行了线程对象的wait()方法,当前线程暂停,并释放锁
thread。png.png

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

bj9ye666 发表于 2022-4-15 00:05
原来多线程是怎么个意思呀,学习了
twapj 发表于 2022-4-15 06:18
qwe12079 发表于 2022-4-15 07:03
kvsjsm 发表于 2022-4-15 09:15
给楼主点赞,坚持学习
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 15:24

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表