zoukankan      html  css  js  c++  java
  • 线程的学习(一)

    一、线程,进程,多线程。

    1、线程:线程指进程中的一个执行场景,也就是执行流程。

    2、进程:进程指的是一个内存中运行的应用程序,如.exe,一个进程对应一个应用程序,一个进程可以对应多个线程。

    3、多线程:指的是这个程序(一个进程)运行时产生了不止一个线程。

    二、线程的状态

    1.新建状态(New): 即创建一个线程对象:Thread t = new MyThread();

    2.就绪状态(Runnable):  执行了t.start( ) 表示当前线程已经做好准备,等待CPU调度,并不是直接执行;

    3.运行状态(Running):  CPU调度该线程;

    4.阻塞状态(Block): 

        a.等待阻塞:调用wait(),使该线程处于等待池(wait blocked pool),直到notify()/notifyAll(),

                线程被唤醒被放到锁定池(lock blocked pool ),释放同步锁使线程回到可运行状态(Runnable);

        b.同步阻塞:对Running状态的线程加同步锁(Synchronized)使其进入(lock blocked pool ), 锁被其他线程占用,

              同步锁被释放进入可运行状态(Runnable);

        c.其他阻塞:调用join()和sleep()方法或发出IO请求,sleep()时间结束或被打断,join()中断,IO完成都会回到Runnable状态,等待JVM的调度;

    5.死亡状态(Dead):线程执行完了或者在执行中因异常退出了run()方法,该线程就结束了。

    三、创建线程(三种方法)

    1.继承Thread类,重写run( )

     

    2.实现Runnable接口,重写run( )

    3.用Callable 和 Future接口创建线程

  • 相关阅读:
    Linux ls
    Linux wc | 简单的字符数行数统计工具
    Linux less | 功能丰富的终端文本浏览器
    POSIX正则表达式 | BRE和ERE
    docker连不上私有仓库Harbor
    血泪史: k8s Initial timeout of 40s passed.
    无法访问k8s.gcr.io下载镜像问题解决办法
    Galera_Cluster_Mysql部署
    解决MobaXterm自动断开连接,亲测有效~
    Ubuntu使用dpkg查看与修改architecture的用法
  • 原文地址:https://www.cnblogs.com/dongtian-blogs/p/10564387.html
Copyright © 2011-2022 走看看