一、问:线程有哪些状态?

new, runnable, running, waiting, dead

线程状态间的流转

二、问:线程实现方式?

  1. 实现 Runnable 接口,然后new Thread, 将实现的类对象传入Thread 构造函数
  2. 继承Thread (细心同学会发现,Thread本身就是实现Runnable 接口)

三、问:举个线程死锁的例子

A: 你先给我钱,我就给你货

B: 你先给我货,我就给你钱

四、问:线程使用场景?

  1. 常见的浏览器、Web服务(现在写的web是中间件帮你完成了线程的控制),web处理请求,各种专用服务器(如游戏服务器)
  2. servlet多线程
  3. FTP下载,多线程操作文件
  4. 数据库用到的多线程
  5. 分布式计算
  6. tomcat,tomcat内部采用多线程,上百个客户端访问同一个WEB应用,tomcat接入后就是把后续的处理扔给一个新的线程来处理,这个新的线程最后调用我们的servlet程序,比如doGet或者doPost方法
  7. 后台任务:如定时向大量(100W以上)的用户发送邮件;定期更新配置文件、任务调度(如quartz),一些监控用于定期信息采集
  8. 自动作业处理:比如定期备份日志、定期备份数据库
  9. 异步处理:如发微博、记录日志
  10. 页面异步处理:比如大批量数据的核对工作(有10万个手机号码,核对哪些是已有用户)
  11. 数据库的数据分析(待分析的数据太多),数据迁移
  12. 多步骤的任务处理,可根据步骤特征选用不同个数和特征的线程来协作处理,多任务的分割,由一个主线程分割给多个线程完成

    等等

五、使用线程应该注意什么?

线程安全

线程安全是一个很宽泛的说明,简单举例如下:

  1. 共享数据处理先后顺序
  2. 资源竞争导致‘死锁’
  3. 线程脱离监控: 线程新建和运行脱离管控,导致整个系统异常

最新文章

  1. Bulkcopy对应的实现是Oracle的SQL*LOADER,期间造成Index Unusable,并且last_ddl_time上是不体现的
  2. MongoDB的主要特性概述
  3. 一系列JavaScript的基础工具
  4. 判断文件是否存在(exist)
  5. JavaScript学习笔记 -- ES6学习(三) 变量的解构赋值
  6. Mean Shift具体介绍
  7. java中的IO二
  8. n个数的最大公约、最小公倍数
  9. 多图片/文件上传 - SwfUpload/PlUpload
  10. Match类解析
  11. HTML5之2D物理引擎 Box2D for javascript Games 系列 第三部分之创建图腾破坏者的关卡
  12. [C#]使用Process的StandardInput与StandardOutput写入读取控制台数据
  13. ELK入门级介绍--打造实时日志查询系统
  14. 第一周 IP通信基础学习回顾
  15. 分享一个自搭的框架,使用Spring boot+Vue+Element UI
  16. 举例说明$POST 、$HTTP_RAW_POST_DATA、php://input三者之间的区别
  17. day3-selenium的使用及
  18. 【读书笔记】iOS-设计模式
  19. mongodb可视化工具 studio3t robo3T 下载安装使用介绍
  20. KNIME + Python = 数据分析+报表全流程

热门文章

  1. [CSS布局基础]居中布局的实现方式总结
  2. mysql页面查询
  3. (五)Ajax修改购物车单品数量
  4. MANIFEST.MF是个什么?
  5. 【转】从一副扑克牌中随机抽取N张
  6. upload-labs通关手册
  7. 分布式 ID 的 9 种生成方式
  8. Rocket - debug - TLDebugModuleInner - Program Buffer Access
  9. Java实现 LeetCode 682 棒球比赛(暴力)
  10. Java中StringBuffer和StringBuilder的区别