并发概念和Java多线程

本文介绍了并发的概念,如抢票、银行交易和网购等场景,阐述了Java多线程如何提升执行效率。详细解析了Java线程的生命周期,包括新建、就绪、运行、阻塞和死亡状态。还讨论了线程优先级,创建线程的三种方式,并强调了实现Runnable接口的优点。最后,提到了线程的优先级和线程的创建方法。
摘要由CSDN通过智能技术生成

一:并发的概念和使用场景

        1.假期/春节上万人同时抢100张票
        2.两个银行同时存取钱   银行---》存钱,手机---》取钱
        3.双十一网购

 二:认识Java多线程

        1.认识Java多线程提出了Java中的并行的概念,在同一时间内提升了代码的执行效率。
        2.CPU工作原理和时间片的概念。
        例:刷网剧:3ms,浏览网页:10ms,办公:20ms,听音乐:5ms (比如浏览网页CPU分配的时间片10ms到了,浏览网页先挂起,CPU会执行下一个进程)      
        3.进程由至少一个线程组成。
        4.程序是指令和数据的有序集合,进程是程序的运行过程。
        总结为:CPU ---> 指令  ---> 程序  ---> 进程   ---> 线程

三:JAVA中线程的生命周期

 Java中线程的生命周期详解

        1.新建状态:建立一个线程对象(new)后该线程对象就处于新建状态,它保持这个状态直到执行start()方法
        2.就绪状态:当线程调用了start()方法之后,就会进入就绪状态。此时的线程处于就绪队列中,等待JVM的调度。
        3.运行状态:就绪状态的线程获取CPU资源,就可以执行run()方法,此时线程便处于运行状态。处于运行状态的线程较为复杂,它可以变为阻塞状态,就绪状态和死亡状态。
        
       { 阻塞状态:如果一个线程执行了sleep(睡眠),suspend(挂起)等方法,失去所占用资源之后,该线程就从运行状态进入阻塞状态。在睡眠时间已到或获得设备资源后可以重新进入就绪状态。
        可以分为三种:
        1.等待阻塞:运行状态中的线程执行wait()方法,使线程进入到等待阻塞状态。
        2.同步阻塞:线程获取synchronized同步锁失败(因为同步锁被其他线程占用)。
        3.其他阻塞:通过调用线程的sleep()或join()发出了I/O请求时,线程就会进入到阻塞状态。

       当 sleep()状态超时,join()等待线程终止或超时,或者I/O处理完毕,线程重新转入就绪状态。
        4.死亡状态:线程完成任务或者其他终止条件发生时,该线程就切换到终止状态。}

五.Java多线程中的线程优先级

        1.每一个Java线程都有一个优先级,有助于操作系统确定线程的调度顺序。
        2.Java线程的优先级是一个整数,取值范围是1(Thread.MIN_PRIORITY)-10(Thread.MAX_PRIORITY)。
        3.默认情况下,每一个线程都会分配一个优先级NORM_PRIORITY(5)。
        4.具有较高优先级的线程对程序更重要,并且应该在低优先级的线程之前分配处理器资源。但是,线程优先级不能保证线程执行的顺序。(  比如 礼让yield() 和 插队join()  )
        5.线程A中启动线程B,线程B继承了线程A的优先级。
       

六.  Java中创建线程的方式  

        1.通过继承Thread类本身。
        2.通过实现Runnable接口。
        3.通过Callable和Future创建线程池。  

Thread类本身也是实现了Runnable接口来达到开启线程的目的。我们平时开发,通过实现Runable接口来实现多线程。(理由:接口相比类更加轻量,较少许多隐形的问题;Java属于单继承语言,尽量把父类这个位置空出来)。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值