随笔分类 - 并发编程
摘要:上一篇:线程死锁 守护线程和用户线程 概述: Java中的线程分为两类【daemon】守护线程和【user】用户线程;在JVM启动时会调用main函数,main函数所在的线程就是一个用户线程,其实在JVM内部还同时启动了很多守护线程,比如垃圾回收线程。 区别: 当最后一个用户线程结束时JVM正常退出
阅读全文
摘要:上一篇:线程中断 线程死锁 定义:死锁指的是两个及两个以上的线程在执行中,因争夺资源而造成的互相等待的现象,在无外力的作用下这些线程会一直等待而无法继续执行。 死锁产生条件: 1、互斥条件:对象被一个线程占用,那么其他线程要等这个线程用完才能去占用; 2、请求并持有条件:一个线程占用了一个资源,执行
阅读全文
摘要:上一篇:yield()–让出CPU执行权 线程中断 线程中断是一种线程中的协作模式,通过设置线程的中断标志并不能直接终止线程的执行,而是被中断的线程根据中断状态自行处理。 中断线程方法:interrupt() 仅仅是给调用这个方法的线程设置一个中断标志,实际上并没有立即被中断,调用这个方法的线程还会
阅读全文
摘要:上一篇:sleep()–线程休眠 yield()–让出cpu执行权 yield()是Thread类下的一个静态方法 从注释中可以知道 这个方法一般用于测试和调试 《JAVA并发编程之美》书中是这么描述的: “当一个线程调用yield()方法时,实际就是在暗示线程调度器当前线程请求让出自己的cpu使用
阅读全文
摘要:上一篇:join()—等待线程执行终止 sleep()是Thread类下的一个静态方法 另外一个sleep(long time,int nanos)也是静态的,,最终还是调用了sleep()方法 当一个执行中的线程调用了Thread的sleep()方法后,调用线程会暂时让出指定时间的执行权,也就是在
阅读全文
摘要:上一节:wait()–阻塞线程 join()等待线程执行终止 所属类: Thread 作用:保证当前线程执行完毕再执行下一个线程,类似同步 场景:在一个任务结束之后才可以进行下一个任务,例如,文件需要先保存成功才让其他线程操作,不能在文件保存过程中就让其他线程去进行操作 个人理解:类似于同步,,将线
阅读全文
摘要:上一节:进程、线程一张图 wait()方法阻塞线程 先说一下线程的几个状态,也称作线程的生命周期 线程分为五个生命周期,分别是: 创建 – 就绪 – 运行 – 阻塞 – 死亡 个人理解: 创建状态和普通对象被创建一样,只是声明这么一个东西 就绪状态下,线程可以参与锁的竞争,等待获取cpu的执行权 运
阅读全文
摘要:另外说明一下,线程上下文切换: 理解线程上下文切换 内容:在多线程编程中,线程的数量一般都大于cpu个数,而每个cpu在同一时刻只能被一个线程使用,为了让用户感觉多个线程时在同时执行,cpu资源的分配采用了时间片轮转的策略,也就是给每个线程分配一个时间片,线程在时间片内占用cpu执行任务。当前线程的
阅读全文