zoukankan      html  css  js  c++  java
  • java——线程

    线程与进程

    1.线程:程序中单独顺序的控制流

        线程本身是通过程序进行运行

        线程是程序中的顺序控制流,只能使用分配给程序的资源与环境

    2.进程:执行中的程序

        一个进程可以包含一个或多个线程

        一个进程至少要包含一个线程

    3.单线程:程序中只存在一个线程,实际上主方法就是一个线程

    4.多线程:多线程是一个程序中执行多个任务

         多线程目的是更好地使用CPU资源

    线程的实现

    1.继承Thread类

    2.实现Runnable接口

    Thread类在java。lang包中定义,继承Thread必须重写run()

    Runnable接口最后还是要调用Thread执行

    线程的状态

    创建状态:准备好了一个多线程对象

    就绪状态:调用start(),等待CPU进行调度

    运行状态:执行run()

    阻塞状态:暂停执行,可能将资源交给其他线程使用

    终止状态(死亡状态):线程销毁

    常用方法:

    取得线程名称:getName()

    取得当前线程对象:currentThread()   ----->currentThread().getName  获取当前线程名称

    判断线程是否启动:isAlive()

    线程强制运行:join()

    线程休眠:sleep()

    线程礼让:yield()  执行到指定条件(比如说大于10),暂停当前线程,让其他线程执行

    中断线程:interrupt()

    线程暂停:wait()

    唤醒线程:notify()       notifyAll()

    线程优先级:

    xxxxxx.setPriority(你想要设置的优先级)

    优先级范围是1~10,越大越优先(更可能最先执行,不是一定最先执行),默认为5

    MAX_PRIORITY    10

    MIN_PRIORITY    1

    NORM_PRIORITY    5

    生命周期:

    线程池:

    为什么要用线程池???

    假设服务器完成一项任务所需时间为: 创建线程--T1

                        执行任务--T2

                        销毁线程--T3

    if(T1+T3)远大于T2,建议使用线程池

    线程池包括以下组成部分:

    1.线程池管理器:用于创建并管理线程(创建、销毁、添加新任务)

    2.工作线程:线程池中的线程,在没有任务时处于等待状态,可以循环地执行任务

    3.任务接口:每个人物必须实现的接口,以供工作现场调度执行任务,

    主要规定了任务的入口,任务执行后的收尾工作,任务的执行状态等...

    4.任务队列:用于存放没有处理的任务,提供一种缓冲机制

  • 相关阅读:
    未能加载文件或程序集“*.DALSQLServer”的原因和解决办法
    删除数据库重复数据一方法
    未能加载文件或程序集 System.Web.Extensions 的解决办法
    3D电影的原理
    语法分析器自动生成工具一览
    【翻译】语法分析工具Gold介绍(1)——系统简介
    安装版本管理软件SVN
    在Visual Studio 2008(及以后版本)中使用SVN
    20191218《信息安全导论》第四周总结
    20191218 唐启恒 师生关系
  • 原文地址:https://www.cnblogs.com/guojia314/p/10094550.html
Copyright © 2011-2022 走看看