- 博客(22)
- 收藏
- 关注
原创 笔记-劳动法理解
原文: http://www.sohu.com/a/131352973_698296 理解: 1. 3种用工合同 1)固定期限劳动合同 2)无固定期限劳动合同 3)以完成一定工作任务为期限的劳动合同 2. 关于签订劳动合同 1)一月内不签订合同,赔偿劳动者2倍工资; 2)用人单位自用工之日起即与劳动者建立劳动关系,并且应当在一个月内订立书面
2017-12-18 23:58:02 565
原创 Android进阶系列之3:IntentService
1 IntentService有什么优势和限制?考虑一个场景:在 Android中点击一个按钮下载一个文件。 常规实现一般都是如此:启动一个Activity,Activity中放置一个按钮,点击按钮,启动一个Service来下载文件。由于UI线程不能进行耗时操作。而Service默认运行在UI线程,所以Service中必须启动一个Thread来下载文件。文件下载完毕以后,我们还需要在手动或者自动的
2017-08-13 15:49:05 324
原创 Android进阶系列之2:HandlerThread详解
1 HandlerThread介绍HandlerThread的本质其实就是Thread封装了Looper。默认情况下,开启一个新的线程时,不会有Looper循环。HandlerThread带个我们的功能是:当开启一个新的线程时,默认帮我们建立好消息循环。方便我们的使用。2 HandlerThread使用例子public class MyActivity extends Activity {
2017-08-13 14:38:03 252
原创 Java 容器与并发
List ArrayList LinkedList CopyOnWriteArrayListMap HashMap LinkedHashMap WeakHashMap IdentityHashMap ConcurrentHashMap ConcurrentSkipListMap NavigableMap Tree
2017-08-08 19:25:25 306
原创 Java多线程系列10(CAS)
1 CAS原理CAS(Compare And Swap)翻译过来就是:比较和交换。 CAS操作涉及三个操作数: 内存值V,旧的预期值A,要修改的新值B。只有当旧的预期值A和内存值V相等的时,将内存值修改为B,否则一直尝试,直到条件满足。 CAS由硬件特性实现,这些指令允许执行读-修改-写操作。即便有其他线程在同时修改变量,也不用担心。因为如果其他线程改变变量,CAS会检测到改变,重新从内存中读取
2017-08-01 23:23:44 262
原创 Java多线程系列9(CountDownLatch)
1 CounDownLatch介绍CountDownLatch是java 1.5新引入的一个同步工具类,常用场景为:一个(或者多个)线程等待另外N个线程完成某个事情之后才能执行。是一个非常有用的线程同步类。 其API有://递减锁存器的计数值,如果计数达到0,就释放所有等待的线程。如果计数大于0,计数减1public void countDown()//等待锁存器的计数值减为0public
2017-07-31 00:28:31 330
原创 源码分析:SharedPreferences实现
startLoadFromDisk启动一个线程,线程调用loadFromDiskLocked(),这个方法首先检测.bak文件是否存在,如果存在就更名为非.bak结尾的文件。然后检测这个文件是否可读:如果可读,读取XML文件的键值对,并保存到Map中。读取完毕以后,调用notifyAll,看到这个,我们马上就会想到wait。看看wait在哪里?
2017-07-30 12:03:26 463
原创 Java多线程系列4(wait/notify/notifyAll)
waitnotifynotifyAll实现生产者消费者模型1 wait/notify/notifyAll这三个方法是在java.lang.Object类提供的,使用的时候需要注意: (1)这三个方法需要在synchronized方法或者同步快中调用; (2)调用wait/notify/notifyAll的对象必须和synchronized对应的对象一致。也即如果synchronized(var
2017-07-30 11:09:14 379
原创 Java多线程系列3(线程同步)
1 为什么要线程同步竞态条件:如果计算的结果取决于多个线程的执行顺序,那么就会发生金态条件。常见的竞态条件是:先检测后执行,执行依赖于检测的结果。检测的结果又依赖于线程实际的执行顺序,这样,就可能出现顺序不一样时,检测的结果不一样,从而导致执行结果不一样。 多线程访问同一个资源,如果出现竞态条件,结果就不是确定的,此时就需要考虑线程同步。2 多线程出错例子看一下下面这个例子:多个线程对同一个变量执
2017-07-29 22:39:13 286
原创 Java多线程系列2(守护线程)
1 用户线程和守护线程 Java虚拟机中,有两种线程:用户线程(User Thread)和守护线程(Daemon Thread)。 平时我们编写代码中的main函数所在的线程一般就是用户线程。 守护线程是相对于用户线程而言的。守护线程的优先级低于用户线程。 用户线程和守护线程的区别是: (1)守护线程在调用start()运行之前,要调用setDaemon(true)才可以设置为
2017-07-29 21:37:07 208
原创 Java多线程系列1(线程基本常识)
1 线程的生命周期线程声明周期,经典图示意如下:线程的几个状态解释如下: 1)当调用 new Thread()时候,线程处于新建状态。此时JVM为线程分配内存空间,执行必要的初始化; 2)调用start(),此时线程会进入到线程等待队列,等待CPU的调度。此时线程处于Runnable状态; 3)线程抢占到CPU的执行权,此时CPU开始执行线程。
2017-07-29 09:31:33 442
原创 源码分析1:Android的LruCache类分析
目前Android缓存实现方案大多会用到LruCache和DiskLruCache,这两个类的使用非常简单,但是如果深入底层去问大家几个问题:1)LruCache的底层实现是怎样的?2) LruCache是否线程安全?3) LRU算法具体是一个什么算法?4) 实际使用的时候为什么必须重写sizeOf方法?这几个问题,相信会难倒很多人。要回答这些问题,还是必须深入代码层去分
2016-08-15 19:13:39 270
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人