异步调用和创建线程
Posted 杀手不太冷!
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了异步调用和创建线程相关的知识,希望对你有一定的参考价值。
异步调用和创建线程
异步调用
从方法调用的角度来讲,如果:
需要等待结果返回,才能继续运行就是同步
不需要等待结果返回,就能继续运行就是异步
注意:同步在多线程中还有另外一层意思,就是让多个线程步调一致
设计:
多线程可以让方法执行变为异步的(即不要巴巴干等着)比如说读取磁盘文件时,假设读取操作花费了5秒钟,如果没有线程调度机制,这5秒调用者什么都做不了,其代码都得暂停
结论:
比如在项目中,视频文件需要转换格式等操作比较费时,这时开一个新线程处理视频转换,避免阻塞主线程
tomcat的异步servlet也是类似的目的,让用户线程处理耗时较长的操作,避免阻塞tomcat的工作线程
ui程序中,开线程进行其他操作,避免阻塞ui线程
创建线程
方法一:直接使用Thread,如下图:
方法二:使用Runnable配合Thread
小结:
方法1是把线程和任务合并在了一起,方法2是把线程和任务分开了。
用Runnable更容易与线程池等高级API配合
用Runnable让任务类脱离了Thread继承体系,更灵活
方法三,FutureTask配合Thread
FutureTask能够接受Callable类型的参数,用来处理有返回结果的情况
以上是关于异步调用和创建线程的主要内容,如果未能解决你的问题,请参考以下文章