zoukankan      html  css  js  c++  java
  • 初识 JAVA并发编程 笔记

    线程:CPU执行的最小执行单元

    并发/高并发(服务端能够承载的吞吐量)

    1、硬件基础
    CPU核心数, 内存, 磁盘[机械硬盘,固态硬盘], 网络

    2、软件层面(最大化的利用硬件资源)
    线程数量、 JVM内存分配大小、 网络通讯机制(BIO 、NIO、AIO)、磁盘IO

    3、线程数量如何提升服务端的并发数量
    好比:单行车道,和多行车道

    并发和并行
    单核心CPU也是可以支持多线程的 --> CUP的时间片切换

    多线程的特点
     · 异步,不需要即时反馈的,可以异步执行,减少执行时间
     · 并行,同时执行,多任务执行

    Java 中的线程
    1、Runnable 实现接口
    2、Thread 继承类
    3、Callable / Furtrue 实现接口  返回执行状态和结果,成功或者失败处理方式


    这个工具如何去使用,什么时候使用
    1、网络请求分发的场景 
    2、文件导入,分片上传
    3、短信发送

    线程的基础

    1、线程的生命周期(java 中有 6 种状态; 操作系统层面 5 种)

    # 线程状态

    1. 初始(NEW):新创建了一个线程对象,但还没有调用start()方法。

    2. 运行(RUNNABLE):Java线程中将就绪(ready)和运行中(running)两种状态笼统的称为“运行”。

    线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取CPU的使用权,此时处于就绪状态(ready)。就绪状态的线程在获得CPU时间片后变为运行中状态(running)。

    3.阻塞(BLOCKED):表示线程阻塞于锁。

    4.等待(WAITING):进入该状态的线程需要等待其他线程做出一些特定动作(通知或中断)

    [sleep(), wait()、jion()、LockSupport.park() ]

    5.超时等待(TIMED_WAITING):该状态不同于WAITING,它可以在指定的时间后自行返回。

    [sleep(long), wait(long)、jion(long)、LockSupport.parkUntil(XX) ]

    6. 终止(TERMINATED):表示该线程已经执行完毕。

    线程阻塞
    Time_Waiting  

    Waiting 

    Blocked  同步代码块阻塞, 锁阻塞状态

    IO阻塞

    线程启动调 (系统线程启动调用线程流程图)

     线程终止方式

    1 线程中断
    thread.stop(); #不建议; 暴力强制终止线程

    interrupt #友好终止过程,但凡让线程阻塞的机制都有 一个 InterruptedException 

    //isInterrupted 是个 native 方法 ,本质上调用的 是 jvm.cpp C或C++语言中定义的方法 

    if(!Thread.currentThread().isInterrupted()){

      // Thread.currentThread().isInterrupted() 默认是 false

      // Thread.currentThread().interrupt();

    }

    thread.start(); 

    thread.interrupt(); // 设置interrupted = true ; 查看源码可知; 通过一个共享变量来

     

  • 相关阅读:
    linux 运维工程师发展路线
    Linux 系统巡检常用命令
    svn 服务器部署
    linux python2.x 升级python3.x
    201871010131张兴盼《面向对象程序设计(java)》第二周学习总结 201871010131
    201871010131张兴盼《面向对象程序设计(java)》第一周学习总结 201871010131
    《2019面向对象程序设计(java)课程学习进度条》 201871010131
    张兴盼201871010131 《面向对象程序设计(java)》第六、七周学习总结 201871010131
    201871010131张兴盼《面向程序设计(java)》第四周学习总结 201871010131
    201871010131张兴盼《面向对象程序设计(java)》第八周学习总结 201871010131
  • 原文地址:https://www.cnblogs.com/laotan/p/12902551.html
Copyright © 2011-2022 走看看