• JUC-JUC是什么?


    一、JUC是什么?

    java.util.concurrent在并发编程中使用的工具类

    进程/线程回顾

    1、进程/线程是什么?

    进程:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。 

    线程:通常在一个进程中可以包含若干个线程,当然一个进程中至少有一个线程,不然没有存在的意义。线程可以利用进程所拥有的资源,在引入线程的操作系统中,通常都是把进程作为分配资源的基本单位,而把线程作为独立运行和独立调度的基本单位,由于线程比进程更小,基本上不拥有系统资源,故对它的调度所付出的开销就会小得多,能更高效的提高系统多个程序间并发执行的程度。

    2、进程/线程的例子?

     使用 QQ ,查看进程一定有一个 QQ.exe 的进程,我可以用 qq 和 A 文字聊天,和 B 视频聊天,给 C 传文件,给 D 发一段语言, QQ 支持录入信息的搜索。 

    大四的时候写论文,用 word 写论文,同时用 QQ 音乐放音乐,同时用 QQ 聊天,多个进程。 

    word 如没有保存,停电关机,再通电后打开 word 可以恢复之前未保存的文档, word 也会检查你的拼写,两个线程:容灾备份,语法检查

    3、线程状态?

    Thread.State 
    
     public enum  State {
    
         /**
         * Thread state for a thread which has not yet started.
         */
         NEW ,(新建)
    
         /**
         * Thread state for a runnable thread.  A thread in the runnable
         * state is executing in the Java virtual machine but it may
         * be waiting for other resources from the operating system
         * such as processor.
         */
         RUNNABLE ,(准备就绪)
    
         /**
         * Thread state for a thread blocked waiting for a monitor lock.
         * A thread in the blocked state is waiting for a monitor lock
         * to enter a synchronized block/method or
         * reenter a synchronized block/method after calling
         * { @link  Object#wait() Object.wait}.
         */
         BLOCKED ,(阻塞)
    
         /**
         * Thread state for a waiting thread.
         * A thread is in the waiting state due to calling one of the
         * following methods:
         *  <ul> 
         *    <li> { @link  Object#wait() Object.wait} with no timeout </li> 
         *    <li> { @link  #join() Thread.join} with no timeout </li> 
         *    <li> { @link  LockSupport#park() LockSupport.park} </li> 
         *  </ul> 
         *
         *  <p> A thread in the waiting state is waiting for another thread to
         * perform a particular action.
         *
         * For example, a thread that has called  <tt> Object.wait() </tt> 
         * on an object is waiting for another thread to call
         *  <tt> Object.notify() </tt>  or  <tt> Object.notifyAll() </tt>  on
         * that object. A thread that has called  <tt> Thread.join() </tt> 
         * is waiting for a specified thread to terminate.
         */
         WAITING ,(不见不散)
    
         /**
         * Thread state for a waiting thread with a specified waiting time.
         * A thread is in the timed waiting state due to calling one of
         * the following methods with a specified positive waiting time:
         *  <ul> 
         *    <li> { @link  #sleep Thread.sleep} </li> 
         *    <li> { @link  Object#wait(long) Object.wait} with timeout </li> 
         *    <li> { @link  #join(long) Thread.join} with timeout </li> 
         *    <li> { @link  LockSupport#parkNanos LockSupport.parkNanos} </li> 
         *    <li> { @link  LockSupport#parkUntil LockSupport.parkUntil} </li> 
         *  </ul> 
         */
         TIMED_WAITING ,(过时不候)
    
         /**
         * Thread state for a terminated thread.
         * The thread has completed execution.
         */
         TERMINATED ;(终结)
    } 

     

    线程的状态

    NEW :新建一个线程

    RUNNABLE:准备就绪

    BLOCKED:阻塞

    WAITING:死等

    TIMED_WAITING:过时不候

    TERMINATED:终结者

    4、wait/sleep区别?

    wait/sleep 

    功能都是当前线程暂停,有什么区别? 

    wait放开手去睡,放开手里的锁sleep握紧手去睡,醒了手里还有锁

    5、什么是并发?什么是并行?

    并发:同一时刻多个线程在访问同一个资源,多个线程对一个点      例子:小米9今天上午10点,限量抢购 

                春运抢票            电商秒杀... 

    并行:多项工作一起执行,之后再汇总      例子:泡方便面,电水壶烧水,一边撕调料倒入桶中 

  • 相关阅读:
    Ubuntu之修改用户名和主机名
    HM中CU,TU的划分
    BZOJ 3237([Ahoi2013]连通图-cdq图重构-连通性缩点)
    Introducing Regular Expressions 学习笔记
    kubuntu添加windows字体
    WISE安装程序增加注册控制
    Linux内核中常见内存分配函数(一)
    Linux内核中常见内存分配函数(二)
    Swift现实
    Android 5.0(L) ToolBar(替代ActionBar) 现实(四)
  • 原文地址:https://www.cnblogs.com/minmin123/p/11411321.html
Copyright © 2020-2023  润新知