![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程/多进程(Java_Android)
文章平均质量分 76
desaco
技术,产品,运营。安卓应用研发8年+。服务过多家上市公司。
展开
-
Java 并发编程(多线程并发、同步、异步等)
线程三种安全:类型安全,内存安全和并发安全。内存的原子性、可见性 & 有序性。 在并发编程中,我们需要处理两个关键问题:线程之间如何通信及线程之间如何同步(这里的线程是指并发执行的活动实体)。通信是指线程之间以何种机制来交换信息。在命令式编程中,线程之间的通信机制有两种:共享内存和消息传递。-- 在并发编程领域,有两个关键问题:线程之间的通信和同步。线程的通信是指线程之间以...原创 2016-08-21 22:08:06 · 4650 阅读 · 0 评论 -
Java中syncrhoized ,reentrantLock ,Atomic ,Lock ,ThreadLocal ,transient ,volatile,对象锁和类锁
内存的原子性、可见性 & 有序性; volatile保证可见性 & 有序性,不保证原子性。-- 工作内存与主内存怎么进行交互?虚拟机定义了8种原子操作:1.lock(锁定主内存的变量,使其被某一线程独占),2.unlock(同理),3.read(把一个主内存的变量传递到工作内存中,以便load),4.load(将从主内存传递的值传递到工作内存的变量副本中),5.s...转载 2016-05-20 22:54:14 · 1305 阅读 · 0 评论 -
线程池原理,安全停止线程(池),Http与Socket连接池-(Android/Java)
深入理解Java之线程池- http://blog.csdn.net/qq_35101189/article/details/60745796?ref=myreadAndroid Handler+ExecutorService(线程池)+MessageQueue模式+缓存模式--http://www.eoeandroid.com/thread-210082-1-1.htmljava自带线程池和...转载 2016-09-26 09:16:55 · 1789 阅读 · 0 评论 -
android-IPC/Binder/D-BUS(Binder/Messager/AIDL)进程间通信(消息机制)
> 自定义Binder,服务端的onTransact(), 客户端的transact()。AIDL、Messenger等常用的进程间通信框架都是对Binder的封装。Android自定义Binder的使用,实现进程间通信- https://github.com/OboBear/MyBinder-- 进程间通讯机制已经存在好多种,Corba,DCOP,COM,SOAP, XML-RPC...转载 2016-01-28 12:48:58 · 1226 阅读 · 0 评论 -
LocalSocket,Socket/ Websocket/ Http,P2P等网络编程(步骤)(Demo)
所谓Socket通常也称作“套接字”,用于描述IP地址和端口,是一个通信链的句柄.Socket有两种主要的操作方式:面向连接(TCP)的和无连接的(UDP,DatagramSocket)。Java.net中提供了两个类Socket和ServerSocket,分别用来表示双向连接的客户端和服务端。 sockets(套接字)编程有三种,流式套接字(SOCK_STREAM),数据报套接字(S...转载 2016-08-28 21:06:23 · 3190 阅读 · 0 评论 -
Java阻塞队列Queue/Deque/condition,DelayQueue/SynchronousQueue/Exchanger并发(数据结构)
1.ArrayBlockingQueue: 一个基于数组实现的有界阻塞队列,必须设置容量 2.LinkedBlockingQueue: 基于链表实现的阻塞队列,容量可以选择进行设置,不设置的话,将是一个无边界的阻塞队列 3.PriorityBlockingQueue: 一个无界的阻塞队列,使用的排序规则和PriorityQueue类似并提供了阻塞操作 4.LinkedBlockingDeq...转载 2017-06-20 12:22:15 · 699 阅读 · 0 评论 -
Handler消息传递机制(子线程中传递new Handler和主线程中new Handle传递消息)
Android消息循环机制: http://blog.csdn.net/crazy1235/article/details/51707527Android Message.obtain() 和Handler.obtainMessage()的区别 --http://www.cnblogs.com/ZhuRenWang/p/4937785.htmlAndroid的消息机制-Message机制...转载 2016-03-03 14:02:19 · 7259 阅读 · 0 评论 -
CAS无锁算法:ReentrantLock,synchronized(JDK 1.6),悲观锁/乐观锁
> 悲观锁/乐观锁 悲观锁:总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。再比如Java里面的同步原语synchronized关键字的实现也是悲观锁。synchronized是悲观锁,这种线程一旦得到锁,...转载 2018-11-10 09:18:51 · 1580 阅读 · 0 评论 -
Android App中多进程问题:捕获异常信息并重启应用
App crash原因以及解决办法- https://blog.csdn.net/yangtuxiaojie/article/details/47123243Android在程序崩溃或者捕获异常之后重新启动app- https://www.cnblogs.com/dingxiansen/p/8628998.html如何使用UncaughtExceptionHandler捕获程序崩溃错误信息...转载 2018-11-21 10:54:11 · 1957 阅读 · 1 评论 -
AsyncTask,HandlerThread,IntentService原理
1. AsyncTask原理:内部是Handler和两个线程池实现的,Handler用于将线程切换到主线程,两个线程池一个用于任务的排队,一个用于执行任务,当AsyncTask执行execute方法时会封装出一个FutureTask对象,将这个对象加入队列中,如果此时没有正在执行的任务,就执行它,执行完成之后继续执行队列中下一个任务,执行完成通过Handler将事件发送到主线程。AsyncTas...转载 2019-03-04 10:25:23 · 521 阅读 · 0 评论 -
Android UI主线程与单线程模型
1.Activity的主线程会在哪个生命周期执行完,子线程会在哪个结束?子线程需要在相应的生命周期前主动结束。 2.Android ActivityThread(主线程或UI线程)或Thread子线程?-- ANR 1.Activity输入事件(按键和触摸事件)5s内没被处理: Input event dispatching timed out2.BroadcastReceiver的事件(...转载 2018-01-19 12:36:24 · 1148 阅读 · 0 评论 -
Android多线程/进程通信(Socket/IPC/Binder/AIDL/Messenger Demo),多进程的坑
-- 进程与线程:进程是对运行时程序的封装,可以保存程序的运行状态,实现操作系统的并发;线程是进程的子任务,保证程序的实时性;进程是操作系统资源的分配单位,线程是CPU调度的基本单位;进程让操作系统的并发性成为可能,而线程让进程的内部并发成为可能。线程从创建、运行到结束总是处于下面五个状态之一:新建状态、就绪状态、运行状态、阻塞状态及死亡状态。Android多线程的多种方式: ...转载 2016-07-28 15:04:00 · 3566 阅读 · 0 评论 -
Java Thread/Runnable线程,sleep/ wait/ await/ notify/ join/ yield/ signal,Conditon
Thread线程从创建、运行到结束总是处于下面五个状态之一:新建状态、就绪状态、运行状态、阻塞状态及死亡状态。内存的原子性、可见性 & 有序性;-- Thread.start()与Thread.run()的区别 1.start()方法来启动线程,真正实现了多线程运行。这时无需等待run方法体代码执行完毕,可以直接继续执行下面的代码;通过调用Thread类的start()方法来启动一...转载 2017-07-24 22:07:46 · 1333 阅读 · 0 评论 -
Android(私有,公有)进程,系统中的进程管理
Android中有多种进程:前台进程,可见进程,服务进程,后台进程,空进程。-- Android将进程分为6个等级,它们按优先级顺序由高到低依次是: 1.前台进程( FOREGROUND_APP) 2.可视进程(VISIBLE_APP ) 3. 次要服务进程(SECONDARY_SERVER ) 4.后台进程 (HIDDEN_APP) 5.内容供应节点(CONTENT_PROVIDE...转载 2017-01-04 16:00:24 · 1849 阅读 · 0 评论 -
User Thread与Daemon Thread(守护线程) - java
> User和Daemon的区别 User和Daemon两者几乎没有区别,唯一的不同之处就在于虚拟机的离开:如果 User Thread已经全部退出运行了,只剩下Daemon Thread存在了,虚拟机也就退出了。 因为没有了被守护者,Daemon也就没有工作可做了,也就没有继续运行程序的必要了。> 在Java中有两类线程:User Thread(用户线程)、Daemon Th...转载 2017-05-30 20:29:35 · 641 阅读 · 0 评论 -
创建线程Future/FutureTask/Callable,且并发
创建线程:Callable+Future Callable+FutureTask> Android并发(多线程相关)-Future,FutureTask和CallableAndroid并发编程之白话文详解Future,FutureTask和Callable-- http://blog.csdn.net/nugongahou110/article/details/49967495Jav...转载 2016-09-04 20:32:36 · 1208 阅读 · 0 评论 -
在Android上实现多进程构架的浏览器(浏览器开发)的讨论
浏览器是互联网入口之一。PC端浏览器是多进程架构;客户端浏览器APP架构是单进程的,当然浏览器APP也可以设计为多进程架构。 webkit浏览器,例如Android浏览器是单进程的。无论是开启系统浏览器,还是在应用中指定url通过intent调起,系统有唯一一个进程com.android.browser。 多进程有不同方式,一种是应用的多进程,即父子进程,有一个主进程,有多个子进程;一...转载 2016-01-06 12:21:02 · 1761 阅读 · 0 评论 -
Android延时处理(Timer/TimerTask,Handler),定时器
-- bugs: TimerTask is scheduled alreadyrx.exceptions.OnErrorNotImplementedException: TimerTask is scheduled alreadyCaused by: rx.exceptions.OnErrorNotImplementedException: TimerTask is scheduled alr...原创 2017-09-27 17:17:50 · 1321 阅读 · 0 评论 -
Java 线程同步与互斥,线程安全,Java锁
多线程三个特征:原子性、可见性以及有序性.同步锁 /并发锁/ 读写锁,显示锁, ReentrantLock与Condition.> 线程的同步与互斥(同步线程与异步线程,线程同步和异步问题)Java 虚拟机中的同步(Synchronization)基于进入和退出管程(Monitor)对象实现, 无论是显式同步(有明确的 monitorenter 和 monitorexit 指令,即同...转载 2016-05-13 00:41:11 · 6973 阅读 · 1 评论 -
CountDownLatch/ CyclicBarrier/ Semaphore/ Exchanger并发
CountDownLatch 是能使一组线程等另一组线程都跑完了再继续跑;CyclicBarrier 能够使一组线程在一个时间点上达到同步,可以是一起开始执行全部任务或者一部分任务,同时,它是可以循环使用的;Semaphore 是只允许一定数量的线程同时执行一段任务。> 信号量 Semaphore;循环栅栏 CyclicBarrier;闭锁 CountDownLatch;Exchan...原创 2016-07-20 12:49:24 · 1583 阅读 · 1 评论 -
Android进程保活(常驻内存)
Android将进程分为6个等级,它们按优先级顺序由高到低依次是:1.前台进程( FOREGROUND_APP);2.可视进程(VISIBLE_APP );3. 次要服务进程(SECONDARY_SERVER );4.后台进程 (HIDDEN_APP);5.内容供应节点(CONTENT_PROVIDER);6.空进程(EMPTY_APP);Android后台杀死系列之一...转载 2016-07-31 00:05:29 · 8081 阅读 · 0 评论 -
线程锁/进程锁/文件锁
> 线程锁/进程锁/文件锁 1.线程锁是锁线程的,锁住禁用,如果4线程的CPU锁一个线程剩余三个(如果可以锁的话),就像四车道封锁一条车道还剩3个车道可以跑车; 2.进程锁是锁进程的,进程就是正在运行的程序,锁住进程就是锁住程序禁止程序的任何操作,就像锁住汽车不能开车一样。 3.文件锁是锁文件的,文件锁住就无法使用,必须解锁才可以使用。 通过对文件上锁,只有拥有锁的进程才能拥有对...转载 2017-12-19 11:06:38 · 5360 阅读 · 0 评论