最近适配摄像头,自然的就要接收、传递音频视频数据。而这些数据是非常频繁的,如果每次都新建缓冲区,一个是影响性能,另外也显得自己水平太低。怎么办?上缓存。

  音频、视频当然要分开缓存。代码很类似,自然的吾就新建了一个类,

  起名?Manager显然不合适,叫Worker最好。Queue、Cache都不是太适合。

  数据队列LinkedBlockingDeque,缓存用ConcurrentLinkedQueue。

  派发数据,当然要用线程。否则一阻塞就误事了。

  收到数据后,先在缓存中查找,找到合适的就从缓存中删除;没有合适的新建。之后将数据复制后放入数据队列中。

  派发线程使用队列取数据时(当然也可以使用休眠办法),有数据就派发,派发结束后加入缓存。

  上述步骤显然也是轻车熟路了。然后就发现,过一会就卡死。这是怎么回事?经过检查原因是:

  音频每次缓冲区大小一样,所以数量有限即可解决。

  视频每次都不一样,于是新建了大量缓冲区。队列中人满为患了。

  试的结果,还是不行,会卡死。

  又想了其他办法。包括开始就新建好,,使用ThreadLocal,结果都不行。怎么办?暂时没办法

一例JAVA多线程访问卡死的现象相关推荐

  1. java多线程访问beans对象_springboot在多线程中注入对象

    springboot多线程,线程类无法实现自动注入需要的bean,可以通过工具类获取需要的bean @Component public class ApplicationContextProvider ...

  2. java 线程访问控件_C#多线程与跨线程访问界面控件的方法

    本文实例讲述了C#多线程与跨线程访问界面控件的方法.分享给大家供大家参考.具体分析如下: 在编写WinForm访问WebService时,常会遇到因为网络延迟造成界面卡死的现象.启用新线程去访问Web ...

  3. Java多线程网络爬虫(时光网为例)

    目录 多线程简介 多线程网络爬虫 分析要爬的数据 网络抓包 爬虫框架 model MtimeThread主方法 MtimeParse解析数据 数据库操作 多线程简介 Java多线程实现方式主要有三种: ...

  4. java程序假死_分析一个常见的java多线程通信问题(假死现象)

    一件复杂的事,一个人如果不能做,两个人又做的不好,一群人就可能很好的解决了.对于线程来说也是,通过多个线程就能完成一个更复杂的功能,这就需要多个线程协作,协作就需要交流,但是交流总是会出问题的.在这篇 ...

  5. Java多线程——线程池的饥饿现象

    概述 定长线程池的使用过程中会存在饥饿现象,也就是当多线程情况下,当池中所有线程都被占用后,被占用的线程又需要空闲线程去进行下一步的操作,此时又获取不到池中空闲的线程,此时就出现了饥饿现象. 示例 p ...

  6. Java多线程学习三十一:ThreadLocal 是用来解决共享资源的多线程访问的问题吗?

    ThreadLocal 是不是用来解决共享资源的多线程访问的. 这是一个常见的面试问题,如果被问到了 ThreadLocal,则有可能在你介绍完它的作用.注意点等内容之后,再问你:ThreadLoca ...

  7. 当初我要是这么学习Java多线程就好了「附图文解析」

    文章目录 1. 概念篇 1.1 认识进程 1.2 进程性质 1.3 操作系统如何管理进程 1.4 多线程和多进程 1.5 时间片 1.6 并发与并行 1.7 内核态与用户态 1.8 进程中的上下文 1 ...

  8. Java多线程发展简史

    摘自: http://www.raychase.net/698 这篇文章,大部分内容,是周五我做的一个关于如何进行Java多线程编程的Knowledge Sharing的一个整理,我希望能对Java从 ...

  9. [转] Java多线程发展简史

    这篇文章,大部分内容,是周五我做的一个关于如何进行Java多线程编程的Knowledge Sharing的一个整理,我希望能对Java从第一个版本开始,在多线程编程方面的大事件和发展脉络有一个描述,并 ...

  10. Java内存访问重排序的研究

    什么是重排序 请先看这样一段代码1 public class PossibleReordering { static int x = 0, y = 0; static int a = 0, b = 0 ...

最新文章

  1. 微信小程序picker 轮滑1-100的实现
  2. 最近很火的MySQL:抛开复杂的架构设计,MySQL优化思想基本都在这
  3. 在过渡到Agile中的十种错误
  4. Android Studio安装Flutter
  5. Java 学习之反射机制“解刨”分解类,并获取内容!
  6. 浪涌保护器ant120_浪涌保护器测试流程
  7. 蓄电池单格电压多少伏_直流屏蓄电池电压的常见问题小结
  8. 绕过tp路由器管理密码_路由器管理员密码忘了怎么办 路由器管理员密码忘了解决方法【介绍】...
  9. oracle数据库运维一般做什么,数据库运维都做些什么呢?
  10. gin post 数据参数_gin请求参数处理
  11. 用户控制 阻止运行程序_阻止或允许您的孩子通过家长控制使用的程序
  12. 红光光浴,对比艾灸、汗蒸、光波房、能量仓等
  13. 【一周头条盘点】中国软件网(2018.10.29~2018.11.2)
  14. 1155 服务器芯片组,华硕服务器主板 P8B-E/4L 单路1155针脚 四千兆网卡
  15. 阿里风控大脑如何应用大数据来构建风控体系?
  16. nvm+nodejs安装以及国内源设置
  17. 最简单的 libVLC 播放器
  18. Program received signal SIGSEGV, Segmentation fault
  19. simulink封装子系统(mask subsystem)车道保持辅助系统曲率预览器封装
  20. 解决windows gitk显示文件内容中文乱码

热门文章

  1. Fiddler调式使用(一)深入研究
  2. PHP性能:序——谈ab(Apache Bench)压力测试工具
  3. es java 实现should must filter组合查询
  4. Nacos初探(1)-- 简介与启动
  5. 关于left join 一些测试
  6. mysql 因单个表过大导致导入数据库失败
  7. 《智能路由器开发指南》——2.6 参考资料
  8. fence_ilo can't connect by ssl, since CentOS 5.8 lack pyOpenSSL
  9. Linux下安装gcc和g++
  10. Vue.js目录结构