
多线程
haovin
佛祖保佑,不出bug!
展开
-
Handler使用方法详解(含实例)
0、目录一、相关概念简介二、使用方式三、使用步骤四、实例讲解五、总结一、相关概念简介Handler是一套消息传递机制,通常的作用是在多线程的应用场景中,将子线程(工作线程)中需要更新UI的相关信息传递到主线程,从而实现工作线程对UI的更新。二、使用方式Handler的使用方式可以根据发送消息的方式不同而分为两种:Handler.sendMessage()...原创 2019-04-27 12:33:36 · 22027 阅读 · 2 评论 -
线程池全面解析
0、目录一、介绍二、工作原理三、使用四、Java中自动的四种线程池五、Future和FutureTask六、总结一、介绍二、工作原理首先介绍线程池的类图:ThreadPoolExecutor类是线程池的真正实现类,可以根据不同的需求配置相关的参数,从而实现自定义线程池。(一般不需要自定义线程池,Java内部已经实现了四个常用的线程池,且都已经配...原创 2019-06-28 22:45:38 · 517 阅读 · 0 评论 -
java产生死锁的原因以及如何处理死锁
所谓死锁,就是指两个或两个以上的线程/进程在执行的过程中,因争夺资源而造成的一种相互等到的现象,如果没有外力作用,他们将无法进行下去。1、导致死锁的原因产生死锁的可能原因有:1、系统资源不足2、资源分配不当3、进程/线程运行推进的顺序不合适产生死锁的四个必要条件:1、互斥条件,指分配的资源进行排他性使用,即在一定的时间内该资源只能被一个进程/线程占用,如果此时还有其他进...原创 2019-06-24 14:02:03 · 4271 阅读 · 0 评论 -
这是一份全面详细的Android多线程学习总结
一、介绍本文主要对之前写的多线程相关文章做一个整体的梳理与总结。本文主要介绍多线程相关,具体如下:二、多线程基础知识2.1、进程与线程主要介绍进程、线程、以及进程与线程的对比。详见《线程与进程对比分析》三、多线程的实现1、基础使用1.1、继承Thread类和实现Runnable创建子线程Android多线实现的基础使用,主要通过继承Thread类和实现R...原创 2019-07-07 18:05:15 · 575 阅读 · 2 评论 -
Synchronized简单介绍(原理、使用、对比分析)
0、目录一、介绍二、原理三、具体使用四、总结一、介绍二、原理Synchronized在JVM中实现的原理。每一个对象都有一个监视器锁(monitor),JVM通过进入或退出monitor对象来实现方法同步和代码块同步。monitorenter指令是同步开始的位置,monitorexit是同步结束的位置,两者成对出现。monitorenter:线程执行moni...原创 2019-06-04 10:01:25 · 412 阅读 · 0 评论 -
实现线程同步的所有方法分析
一、介绍当我们写并发编程时,多个线程可同时访问一个共享资源,比如变量或对象,如果多个线程同时读写该资源,会导致该资源状态混乱,数据不准确,相互之间产生冲突。因此加入同步锁,使资源同一时间只能有一个线程访问,从而保证资源不发生冲突。二、线程同步具体实现1、Synchronized使用Synchronized关键字,分为同步方法和同步代码块,具体关于Synchronized的介绍和...原创 2019-06-07 22:34:02 · 253 阅读 · 0 评论 -
AsyncTask原理和源码解析
0、目录一、简介二、使用方法以可能存在的问题三、工作原理四、类和核心方法的介绍 4.1、类定义 2.2、核心方法五、源码分析六、总结一、简介二、使用方法以及可能存在的问题使用方法请详见《AsyncTask使用详细介绍(含使用实例)》可能存在的问题详见《AsyncTask存在的问题和缺陷》三、工作原理Asyn...原创 2019-05-23 09:56:32 · 383 阅读 · 0 评论 -
IntentService详细介绍(含使用实例及源码分析)
0、目录一、简介二、Service介绍三、使用步骤四、使用实例五、源码分析六、IntentService与service的区别七、总结一、简介二、Service介绍生命周期:首次启动服务时,调用startService()方法开启服务后,服务的执行过程:onCreat()-->onStartCommand()-->onDest...原创 2019-05-26 19:12:37 · 848 阅读 · 2 评论 -
继承Thread和实现Runnable创建子线程详细介绍(含使用实例和对比分析)
0、目录一、继承Thread类 1、简介 2、使用 2.1、使用步骤 2.2、使用实例 2.3、两种使用方式对比二、实现Runnable接口 1、简介 2、使用 2.1、使用步骤...原创 2019-05-16 19:42:51 · 794 阅读 · 0 评论 -
Handler中存在的相关问题
1、Looper.loop是一个死循环,拿不到需要处理的Message就会阻塞,那在UI线程中为什么不会导致ANR?主线程的死循环一直运行是不是特别消耗 CPU 资源?首先需要明确ANR的概念,ANR是Android Not Response的缩写,什么情况下会造成ANR?1、当前的事件没有机会得到处理(即主线程正在处理前一个事件,没有及时完成或者Looper被某种原因阻塞住了)2、当...原创 2019-05-09 23:29:41 · 584 阅读 · 0 评论 -
AsyncTask使用详细介绍(含使用实例)
0、目录一、介绍二、类和方法介绍 2.1、类定义 2.2、核心方法三、使用步骤四、使用实例五、AsyncTask存在的问题和缺陷一、介绍二、类和方法介绍2.1、类定义public abstract class AsyncTask<Params, Progress, Result> { ......}...原创 2019-05-19 16:17:49 · 1347 阅读 · 0 评论 -
AsyncTask存在的问题和缺陷
1、串行还是并行实际后台线程只有一个,即所有的任务是串行的,即完成一个任务后再执行下一个任务,而非并行。如果开多个任务,比如开三个任务,实际执行是串行的:mAsyncTask task1 = new mAsyncTask();mAsyncTask task2 = new mAsyncTask();mAsyncTask task3 = new mAsyncTask();task1...原创 2019-05-19 16:06:57 · 1228 阅读 · 0 评论 -
ThreadLocal解析
0、目录1、引入2、介绍3、实例4、原理与源码5、总结1、引入在Handler使用中,每个线程都有一个对应的Looper,主线程通过 Looper.getMainLooper()获得与主线程对应的Looper,子线程中通过 Looper.myLooper()获取与该子线程对应的Looper。//Looper.myLooper()的源码: /** ...原创 2019-05-06 19:14:40 · 195 阅读 · 0 评论 -
HandlerThread原理、使用实例、源码详细解析
0、目录一、HandlerThread简介二、HandlerThread原理三、HandlerThread使用实例四、HandlerThread源码分析五、总结一、HandlerThread简介HandlerThread是一个轻量级的异步类,可以实现多线程,并且可以实现线程间的通信(HandlerThread主要应用是实现主线程到子线程的通信,子线程到主线程通信可以通过...原创 2019-05-03 15:17:12 · 5674 阅读 · 1 评论 -
Handler源码分析
0、目录一、说明二、源码分析 2.1、使用Handler.sendMessage()方式发送消息 2.2、使用Handler.post()方式发送消息三、总结四、感谢一、说明本人也是菜鸟,跟着大神的脚步,第一次尝试分析源码,希望自己终有一天也能成为大神。本文直接进行源码相关的介绍,如果您对Handler相关的使用和工作原理还不是太熟悉...原创 2019-05-02 18:29:01 · 294 阅读 · 0 评论 -
Handler原理解析(图文详解)
0、目录1、Handler简介2、Handler核心类3、Handler工作原理4、总结1、Handler简介Handler是一套 Android 消息传递机制 / 异步通信机制,Android系统本质上是来说是一个消息驱动的系统,所以在Android开发中,Handler特别重要。Handler的作用是在多线程应用场景中,将工作线程中需要更新UI的操作信息传递到主线程...原创 2019-04-27 23:33:19 · 3433 阅读 · 0 评论 -
线程与进程对比分析
0、目录一、线程介绍二、线程生命周期三、进程介绍四、进程与线程的对比一、线程介绍二、线程生命周期首先看整个流程图:具体:1、新建状态:此时是Thread t = new Thread()之后的一个状态,这里仅仅创建了一个Thread类的对象。2、就绪状态:线程对象创建之后,调用t.start()方法,线程进入就绪状态,等待获取CPU的使用权,因为在同...原创 2019-07-07 15:27:08 · 608 阅读 · 0 评论