线程的基础

什么场景下回使用多线程

主要解决等待的问题,有以下两类场景

通过并行计算来来提高程序的执行性能如可以在报表中异步查询,同步做组装来减少消耗时间。

减少I/0,响应的阻塞如tomcat的IO模型

如何实现多线程:

无返回结果:Thread,Runnable

有返回结果:Callable

如何优雅的使用线程

如通过阻塞队列来实现对请求的异步化处理

线程状态

查看线程状态


线程的终止

Stop:不推荐,暴力终止,相当于kill

通过标志位来终止线程:Interrupt,Stop

线程的复位

恢复到默认值,也就是falseThread.interrupted

线程安全性

线程安全分为3类问题:

可见性:线程A对变量c进行修改,线程B仍然使用原来的变量值,无法使用最新值

原子性:在多线程的情况下,无法实现原子递增

有序性:程序执行的顺序和代码的顺序不一样,原因是编译器或Cpu为了提高代码的执行效率,进行了重排序。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • layout: posttitle: 《Java并发编程的艺术》笔记categories: Javaexcerpt...
    xiaogmail阅读 5,875评论 1 19
  • 线程池ThreadPoolExecutor corepoolsize:核心池的大小,默认情况下,在创建了线程池之后...
    irckwk1阅读 765评论 0 0
  • 同步:我们之前写程序的时候都是从上到下,从左到右,代码执行顺序1个人执行多个任务,也是依次执行,1个人同一时间执行...
    WarmLikeYou阅读 225评论 0 1
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,144评论 1 32
  • 线程的概念及疑问 进程和线程进程是一个静态的概念,机器上的一个class文件,程序要执行,首先要把class文件加...
    Ricky_Zuo阅读 236评论 0 0