zoukankan      html  css  js  c++  java
  • 多线程(一)--线程的运行

    一:线程与进程
    1. 进程 :是一个正在执行中的程序,每一个进程执行都有一个执行顺序,该顺序是一个执行路径,或者叫一个控制单元;
    2.线程 : 进程的一个独立控制单元,进程不共享数据,线程可以共享数据
    3多线程:使用并发原理,是多个线程呈现出共同运行的情况
     
    二:线程的生命周期
    1.新建:从线程被建立到使用start()之间的过程
    2.就绪:线程通过start方法之后进入就绪状态,等待JVM进行资源调度
    3.运行:就绪状态的线程得到资源后就可以进行run方法,运行状态的线程可以变为就绪,死亡,阻塞三种状态
    4.阻塞/等待:运行中的线程使用sleep方法后,会释放所有资源,并且进入阻塞状态等待资源的再次分配。
    5.终止/死亡:当线程完成时,或者触发其他终止条件时,线程会终止,并且释放所有资源
     
    三:线程的创建
    1.继承Thread类实现
    2.通过Runable接口实现
     
    四、Thread实现
       1.首先Thread的实现也是通过接入Runnable接口
       2.实现方法,方法继承Thread
       3.Thread自带的方法,start()方法,sleep()方法
    五、Runnale(就绪)实现
        1.实现方法,接入Runnable接口
         2.sleep() start()等方法需要通过强转为Thread方法才可以使用,不过sleep静态方法,可以直接          
             Thread.sleep()直接调用。
         3.Runnable接口本体只有一个抽象run方法
     
    六、常见线程方法
         1.sleep():与object中的wait方法,使线程进入阻塞状态(即在指定时间内不会进入就绪状态)
            阻塞结束后,线程进入就绪状态
          2.yield():线程释放当前资源,进入就绪状态,与其他就绪线程一起抢夺资源。作用一般是给同
             等优先级的线程共同执行的资格。与sleep不同,线程释放资源后,会马上进入就绪状态争夺
             cpu资源。
          3.join():调用某线程,且等待该线程执行完毕后才可以进行之前线程。
          4.setProirity():设置线程的优先级
          5:getPrority():获取线程的优先级
          6:interruput():发出中断信号,如果存在死锁现象的线程收到信号后,会抛出异常,中断当前线程
          7:start():
  • 相关阅读:
    干货—MySQL常见的面试题+索引原理分析!
    如何设计一个百万级的消息推送系统
    【金三银四跳槽季】Java工程师如何在1个月内做好面试准备?
    Nginx实现请求的负载均衡 + keepalived实现Nginx的高可用
    java函数式编程之Supplier
    SpringMVC + MyBatis + Mysql + Redis(作为二级缓存) 配置
    Redis创建集群报错
    阿里云服务器Tomcat无法从外部访问
    SSM框架学习之高并发秒杀业务--笔记5-- 并发优化
    在windows上部署使用Redis
  • 原文地址:https://www.cnblogs.com/qqwhsj/p/10641734.html
Copyright © 2011-2022 走看看