P1 线程简介——多线程详解(B站狂神说)

11 篇文章 0 订阅

多线程秋招真的很常问,自己看B站视频笼统的过了一遍复习。
这个老师讲的想对比较适合初学,高阶建议啃书。😀
记了一些笔记写成博客分享出来。📕

在这推荐up主:狂神说。👍
指路b站视频链接:

https://www.bilibili.com/video/BV1V4411p7EF/


多线程 Java.Thread

P1  线程简介
P2  线程创建
    初识并发
    静态代理+lambda表达式

P3  线程状态
P4  线程同步
P5  线程通信问题
P6  线程池


P1 线程简介

1.基本概念

多任务:
  看起来多个任务在做,本质大脑在同一时间依旧只做了一件事情。
  边吃饭边玩手机

多线程:
  多个线程同时执行。
  一条道路发生道路堵塞,效率低;加多个车道,能充分利用道路。

普通方法调用与多线程:
在这里插入图片描述

程序:
  程序是指令和数据的有序集合,本身没有任何运行含义。静态概念

进程(Process):
  操作系统资源分配的最小单位 动态概念
  多进程:都去银行汇款,如果甲和乙用的不是同一张银行卡,其实根本办的不是一件事

线程 (Thread):
   操作系统调度的最小单位(操作系统CPU资源分配的最小单位)
   多线程:都去银行汇款,如果甲和乙用的是同一张银行卡,其实办的就是同一件事

进程与线程:
  进程至少有一个线程(主线程)。
  线程之间资源共享,资源由进程申请
  线程之间可通信,主线程子线程。
  JVM中的线程区别于OS中的线程。
  JVM进程结束,当非后台线程结束时。

  
注意:
  很多多线程是模拟出来的,**真正的多线程是指有多个cpu,即多核。如服务器。
  如果是模拟出来的多线程,即在一个cpu的情况下,在同一个时间点,cpu只能执行一个代码,因为切换的很快,所以就有同时执行的错局。

  
核心概念:
  1.线程就是独立的执行路径;
  2.在程序运行时,即使没有自己创建线程,后台也会有多个线程,如主线程,gc线程;
  3.main()称之为主线程,为系统的入口,用于执行整个程序;
  4.在一个进程中,如果开辟了多个线程,线程的运行由调度器安排调度,调度器是与操作系统紧密相关的,先后顺序是不能人为的干预的。
  5.对同一份资源操作时,会存在资源抢夺的问题,需要加入并发控制;
  6.线程会带来额外的开销,如cpu调度时间,并发控制开销。
  7.每个线程在自己的工作内存交互,内存控制不当会造成数据不一致
  
  

2.为什么需要多线程模型处理?优点

  有些场合 可能提升速度;(增加线程极限、本身创建线程+销毁线程 也需要耗费时间)
  有些场合 必须使用多线程;(阻塞式IO,一个调度单位倒下,剩下调度单位还能抢CPU工作)
  单线程耗时操作(上传大文件)会出现阻塞。

线程可能被从CPU上调度下来的5种情况?
   1.高优先级抢走
   2.执行结束
   3.在等IO
   4.主动放弃
   5.时间片耗尽
  
  

3.多线程谁先谁后?

   优先级只是建议,不是强制!!!

  t.join( ); 主线程阻塞,直到t线程执行结束,猜接着往下执行
输出结果:大概率是 main–>a–>b ,其他情况都有可能!!!!!!!!!!
   大概率CPU最先分配给主线程main,主线程结束在分配给其他线程。

public class 线程执行顺序与主线程对比 {

    private static class A extends Thread{
        @Override
        public void run(){
            System.out.println("我是A");
        }
    }

    private static class B extends Thread{
        @Override
        public void run(){
            System.out.println("我是B");
        }
    }

    public static void main(String[] args) {
        A a=new A();
        B b=new B();

        //a、b 放入就绪队列中
        a.start();
        b.start();
        System.out.println("我是main");
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Cyril-zxy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值