• 线程学习一


    线程学习一

    线程间有父子关系,称为线程间的层次关系,如图:

    photo1

    • 在java平台中,一个线程是否为守护线程取决于父线程。默认情况下,父线程是守护线程则子线程也是守护线程。
    • 一个线程的优先级默认为该线程的父线程的优先级。
    • 习惯上我们成某些子线程为工作线程或者后台线程
    • 工作线程通常是其父线程创建来用于专门负责某项特定任务的执行的。

    线程也有生命周期,现成的生命周期有三种状态:就绪,阻塞,运行。其可以 包括一下几种:

    • NEW 一个创建尔未启动的线程处于该状态
    • RUNNABLE 包含两个子状态
      • READY表示处于该状态的线程可以被线程调度器进行调度而转变成为RUNNING状态(活跃进程)
      • RUNNING可以表示处于该状态的进程正在运行
    • BLOCKED一个进程发起阻塞式I/O,或者申请一个由其他线程持有的独占资源时,便会处于该状态。不会占用处理器资源
    • WAITING一个线程执行了某些特定方法之后就会处于这种等待其他线程执行另外一些特定操作的状态
    • TIMED_WAITINGWAITING类似,处于该状态的线程并非无限制地等待其他线程执行特定操作,而是处于带有时间限制的等待状态。当其他线程没有在指定时间内执行该线程所期望的特定操作时,该线程的状态自动转换为RUNNABLE
    • TERMINATED已经执行结束的线程处于该状态。因为一个线程实例只能被启动一次,因此一个线程也只可能有一次处于该状态

    重要:一个线程在其整个生命周期中,只可能有一次处于NEWTERMINATED状态

    多线程有以下的优势:

    • 提高系统的吞吐率
    • 提高响应性
    • 充分利用多核
    • 最小化对系统资源的使用
    • 简化程序的结构

    但是也有自身的问题

    • 线程安全问题
    • 线程活性问题
    • 上下文切换问题
    • 可靠性

    主要点:

    • 进程是程序的运行实例
    • 线程是进程中可独立执行的最小单位
    • 应用程序负责线程的创建与启动
    • 一个线程从其创建到运行结束的整个生命周期会经历若干状态
    • 线程是多线程编程的基本单位

    参照《Java多线程编程实战指南》

    这是小睿的博客,如果需要转载,请标注出处啦~ヾ(≧▽≦*)o谢谢。
  • 相关阅读:
    Qt编写安防视频监控系统27-GPU显示
    Qt开源作品37-网络中转服务器
    【日拱一卒】链表——回文判断
    【日拱一卒】链表——判断链表是否有环
    【日拱一卒】链表——链表反转(递归解法)
    批处理文件bat设置环境变量path
    用来进行序列化和反序列化的工具类
    @JsonIgnoreProperties转换实体时忽略json中不存在的字段
    如何获取mac的ip地址
    objectMapper.convertValue
  • 原文地址:https://www.cnblogs.com/Yunrui-blogs/p/13635268.html
Copyright © 2020-2023  润新知