随笔分类 - java
摘要:标签: java annotation 上一篇博客讨论了关于注解的基础知识,以及运行时(Runtime)通过反射机制来处理注解,但既然是Runtime,那么总会有效率上的损耗,如果我们能够在编译期(Compile time)就能处理注解,那自然更好,而很多框架其实都是在编译期处理注解,比如大名鼎鼎的
阅读全文
摘要:在java和android 中,注解的运用非常广泛,很多的类库,第三方框架中都用到了注解。所以我们有必要来熟悉注解的相关知识。 Annotation,注解(也称为元数据),可以为我们在代码中添加额外的信息,我们也可以很方便的使用这些数据 当然,在代码中添加额外信息我们最经常使用的是 注释(comme
阅读全文
摘要:为了防止对共享受限资源的争夺,我们可以通过synchronized等方式来加锁,这个时候该线程就处于阻塞状态,设想这样一种情况,线程A等着线程B完成后才能执行,而线程B又等着线程C,而线程C又等着线程A。这三个任务之间相互循环等待,但是其实没有哪个任务能够执行,这种情况就发生了死锁。 有一个经典的哲
阅读全文
摘要:对于多线程之间的共享受限资源,我们是通过锁(互斥)的方式来进行保护的,从而避免发生受限资源被多个线程同时访问的问题。那么线程之间既然有互斥,那么也会有协作。线程之间的协作也是必不可少的,比如 盖个商场这一个任务,线程A打地基,线程B该楼,线程C装修。在线程A打地基的时候,线程B可以准备必要的盖楼材料
阅读全文
摘要:一个线程可以处于以下几种状态之一: (1) 新建(new):当线程被创建时,它只会短暂的处于这种状态,此时它已经获得了必须的系统资源,并执行了初始化,该线程已经有资格获取cpu时间了,之后它将转化为可运行状态或阻塞状态。(2) 就绪(Runnable):万事俱备,只欠东风,该线程在等待着,只要调度器
阅读全文
摘要:对于单线程的顺序编程而言,每次只做一件事情,其享有的资源不会产生什么冲突,但是对于多线程编程,这就是一个重要问题了,比如打印机的打印工作,如果两个线程都同时进行打印工作,那这就会产生混乱了。再比如说,多个线程同时访问一个银行账户,多个线程同时修改一个变量的值。这个时候,就很容易产生冲突了。 看一个例
阅读全文
摘要:当我们使用 线程池的时候,可以使用 newCachedThreadPool()或者 newFixedThreadPool(int)等方法,其实我们深入到这些方法里面,就可以看到它们的是实现方式是这样的。 包括其他几种不同类型的线程池,其实都是通过 ThreadPoolExecutor这个核心类来创建
阅读全文
摘要:从java5开始,类库中引入了很多新的管理调度线程的API,最常用的就是Executor(执行器)框架。Executor帮助程序员管理Thread对象,简化了并发编程,它其实就是在 提供了一个中间层,方便程序员管理异步任务的执行,而又不用显式的管理线程的生命周期。 Executor采用了线程池实现,
阅读全文
摘要:Java在顺序性语言的基础上提供了多线程的支持。Java的线程机制是抢占式的。这表示调度机制会周期的中断线程,将上下文切换到另一个线程,从而为每个线程都提供时间片。(与抢占式多线程对应的是 协作式多线程,每个子线程都自动的放弃控制,这就要求程序员需要在子线程的代码中插入某些让步语句)。 Java的多
阅读全文
摘要:最近这段在看java多线程编程方面的东西。所以特写了几篇文章,来总结和回顾一下自己所学习到的相关知识。因为水平有限,文章中总结不全面甚至理解错误的地方,欢迎读者指点批评。 我们平时所接触到的程序,都是顺序编程。顺序编程的意思是,程序中的所有事物在任意时刻都只能执行一个步骤(包括那些代码当中的顺序结构
阅读全文