多线程
阿姨不可以嘛
愿每天奔走在自己的热爱里
展开
-
主线程和子线程通信
默认情况下新增的线程是没有开启消息循环的(主线程除外,会默认创建Looper对象,开启消息循环)一般情况下都是子线程向主线程发送消息,主线程中已经默认实现了Looper的操作。只需要创建Handler 开启线程发送消息 主线程中接收消息处理就可以了Looper:消息队列(MessageQueue)的管家(Looper)。一个消息队列只有一个管家,但是Handler(工人)可以有多个。Looper管...原创 2018-05-11 18:01:23 · 3218 阅读 · 0 评论 -
Runnable 和 Callable 的区别
编写多线程程序一般有三种方法,Thread,Runnable,Callable.Runnable和Callable的区别是:Callable规定的方法是call(),Runnable规定的方法是run()。其中Runnable可以提交给Thread来包装下,直接启动一个线程来执行,而Callable则一般都是提交给ExecuteService来执行。 实现Callable接口的任务线程能返回执行结...转载 2018-05-08 10:13:18 · 406 阅读 · 0 评论 -
ExecutorService中submit和execute的区别
前言在Java5之后,并发线程这块发生了根本的变化,最重要的莫过于新的启动、调度、管理线程的一大堆API了。在Java5以后,通过Executor来启动线程比用Thread的start()更好。在新特征中,可以很容易控制线程的启动、执行和关闭过程,还可以很容易使用线程池的特性。开始分析创建任务:实现Runnable接口的类执行任务:通过java.util.concurrent.ExecutorSe...原创 2018-05-08 10:58:17 · 3280 阅读 · 1 评论 -
Runnable 接口
在程序开发中只要是多线程肯定永远以实现Runnable接口为主,因为实现Runnable接口相比继承Thread类有如下好处:•避免点继承的局限,一个类可以继承多个接口。•适合于资源的共享以卖票程序为例,通过Thread类完成:class MyThread extends Thread{ private int ticket=10; public void run(){ for...原创 2018-05-03 19:43:12 · 2990 阅读 · 3 评论 -
Handler中的obtainMessage
比较:Message msg = new Message();Message msg = handler.obtainMessage(); 第一种new对象 第二种是从MessagePool 拿的,省去了创建对象申请内存的开销获取Message实例的方式//获取Message实例的方式Message msg1 = Message.obtain();//或Message msg2 = Handle...原创 2018-05-07 15:26:40 · 474 阅读 · 0 评论 -
ExecutorService线程池
下面 博客介绍的很详细:http://www.cnblogs.com/whoislcj/p/5607734.html----------------------------------------------------------------->为什么要引入线程池?new Thread()的缺点每次new Thread()耗费性能调用new Thread()创建的线程缺乏管理,被称为野线程...转载 2018-05-08 09:54:15 · 234 阅读 · 0 评论 -
ExecutorService 关闭 and 如何判断线程池中任务执行完毕
ExecutorService 关闭shutdown shutdownNow awaitTermination当你使用ExecutorService的时候,你应该记得关闭它,这样这些被管理的线程才会停止运行。举例:如果你的应用通过main()方法启动,并且你的 应用中存在一个 激活的 ExecutorService,那么即使你的main thread(main线程)已经退出了,这个应用依然会在后台...原创 2018-06-01 11:17:05 · 14286 阅读 · 1 评论