• Java中的线程模型及实现方式


    概念:
    线程是一个程序内部的顺序控制流
    线程和进程的比较:
    每个进程都有独立的代码和数据空间(进程上下文),进程切换的开销大。
    线程:轻量的进程,同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC),线程切换的开销小
    多进程:在操作系统中能同时运行多个任务(程序)
    多线程:在同一应用程序中有多个顺序流同时执行
    线程的概念模型
    1. 虚拟的CPU,由java.lang.Thred类封装和虚拟;
    2. CPU所执行的代码,传递给Thread类对象;
    3. CPU所处理的数据,传递给Thread类对象;
    创建线程的两种方式:实现Runnable接口,继承Thread类
    比较:
    实现Runnable接口
    可以将CPU,代码和数据分开,形成清晰的模型;
    线程体run()方法所在的类还可以从其他类继承一些有用的属性和方法
    有利于保持程序风格的一致性
    继承Thread类
    Thread子类无法再从其他类继承
    编写简单,run()方法的当前对象就是线程对象,可直接操纵
     
    当一个程序的用户线程全部结束后,即使后台线程的逻辑处理未结束,后台线程也会结束。
    线程生命周期:
    新建
    就绪
    运行
    阻塞
    终止
    Java中的线程模型及实现方式
     
    线程优先级:
    默认为5,最小为1,最大为10,不提供优先级低的在优先级高的执行结束后执行
     
    线程串行化
    join()
    线程休眠
    sleep()
    线程让步 
    yield() 时间片没用完就让步给其他线程尽早执行,当前线程进入就绪状态
    线程的挂起和恢复
    线程挂起-暂时停止当前运行中的线程,使之转入阻塞状态,并且不会自动恢复运行。
    线程恢复-使得一个已挂起的线程恢复运行
    suspend()
    resume()
    Java中的线程模型及实现方式
     
    临界资源问题
    并发线程有机的交替,确保共享的数据在关键的时段被专用
    多个线程间共享的数据称为临界资源
    在Java语言中,引入了对象互斥锁的概念,来保证共享数据操作的完整性
    每个对象都对应于一个可称为“互斥锁”的标记,这个标记用来保证在任何一个时刻,只能有一个线程访问该对象
    关键字synchronized来与对象的互斥锁联系。当某个对象用synchronized修饰时,表明该对象在任一时刻只能有一个线程访问
    并发运行的多个线程彼此间等待,都无法运行的状态称为线程死锁
    线程同步通信
    为避免死锁,在线程进入阻塞状态时应尽量释放其锁定的资源,以为其他的线程提供运行的机会
    wait()
    notify()/notifyAll()
    线程间数据传输
    使用管道流
    类的同步性与线程安全
  • 相关阅读:
    时间相关概念
    如何查询Oracle EBS接口表
    生成随机数
    web.config/app.config敏感数据加/解密的二种方法
    浅谈.NET下的多线程和并行计算
    禁用浏览中的Tab键
    主从表关联,判断子表全部符合条件后主有才有效
    windows xp 中的administrator帐户不在用户登录内怎么解决?
    WebResourceCompression压缩模块以及.Net 程序脱离.net framework框架运行
    使用架构(XSD)验证XML文件
  • 原文地址:https://www.cnblogs.com/tian830937/p/5277459.html
Copyright © 2020-2023  润新知