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.任务队列:用于存放没有处理的任务,提供一种缓冲机制

  • 相关阅读:
    java程序员究竟应该掌握点什么
    Java程序员集合框架面试题
    数组名和数组名取地址的区别
    二维、三维数组转一维数组
    函数指针 行指针 指针数组
    转:如何成为一个优秀的程序员
    转:最小堆的数组实现
    for_each使用方法详解[转]
    c++虚函数的作用是什么?
    转:C语言 可变参数
  • 原文地址:https://www.cnblogs.com/guojia314/p/10094550.html
Copyright © 2011-2022 走看看