
多线程
文章平均质量分 76
稚枭天卓
manu
展开
-
Java多线程 之 类锁与对象锁
对象锁 java的所有对象都含有1个互斥锁,这个锁由JVM自动获取和释放。线程进入synchronized方法的时候获取该对象的锁,当然如果已经有线程获取了这个对象的锁,那么当前线程会等待;synchronized方法正常返回或者抛异常而终止,JVM会自动释放对象锁。这里也体现了用synchronized来加锁的1个好处,方法抛异常的时候,锁仍然可以由JVM来自动释放。 类锁 对象锁是用来控制原创 2017-04-06 00:20:16 · 618 阅读 · 0 评论 -
Java线程安全 之 静态变量、实例变量、局部变量
静态变量:线程非安全。 静态变量即类变量,位于方法区,为所有对象共享,共享一份内存,一旦静态变量被修改,其他对象均对修改可见,故线程非安全。 实例变量:单例模式(只有一个对象实例存在)线程非安全,非单例线程安全。 实例变量为对象实例私有,在虚拟机的堆中分配,若在系统中只存在一个此对象的实例,在多线程环境下,“犹如”静态变量那样,被某个线程修改后,其他线程对修改均可见,故线程非安全;如果每个线程原创 2017-04-05 21:59:31 · 596 阅读 · 0 评论 -
Java 中的单例模式
概念 Java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍三种:懒汉式单例、饿汉式单例、登记式单例。 单例模式有以下特点: 1、单例类只能有一个实例。 2、单例类必须自己创建自己的唯一实例。 3、单例类必须给所有其他对象提供这一实例。 单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。在计算机系统中,线程池、缓存、日志原创 2017-05-09 16:53:19 · 489 阅读 · 0 评论 -
我是一个线程
线程状态有,就绪、等待、运行。就绪是等着别人执行,等待是等待数据库执行;单独启动的线程是会被 Kill 掉的,而线程池之中的线程不会,只有在重启时才会消亡;多个线程访问共享资源,某些情况需要使用锁机制的;线程占用 CPU 太大太久产生死锁,操作系统根据算法杀死某个线程。转载 2017-10-23 11:36:22 · 341 阅读 · 0 评论 -
Java 的线程池 ExecutorService 简单介绍
做java的开发,线程是经常用的。最简单的使用大家都应该清楚,如继承Thread类、实现Runnable接口。这样,是没有问题。但是当我们需要频繁的处理一些任务时候,就要多次创建线程和处理线程关闭等回收工作。 这样比较麻烦。并且如果同时不限制线程个数,很多个任务一起执行,对性能有一定影响。所以,java提供了Executor线程池来处理并发任务,并且可以支持4种模式: 1.new Cach...原创 2017-10-23 20:16:38 · 554 阅读 · 0 评论 -
线程、多线程与线程池总结
线程:进程中负责程序执行的执行单元。一个进程中至少有一个线程。多线程:解决多任务同时执行的需求,合理使用CPU资源。多线程的运行是根据CPU切换完成,如何切换由CPU决定,因此多线程运行具有不确定性。线程池:基本思想还是一种对象池的思想,开辟一块内存空间,里面存放了众多(未死亡)的线程,池中线程执行调度由池管理器来处理。当有线程任务时,从池中取一个,执行完成后线程对象归池,这样可以避免反复创建线程对象所带来的性能开销,节省了系统的资源。http://www.jianshu.com/p/b8197dd2原创 2017-10-23 20:28:07 · 322 阅读 · 0 评论 -
JVM 堆内存设置原理
堆内存设置原理JVM堆内存分为2块:Permanent Space 和 Heap Space。Permanent 即 持久代(Permanent Generation),主要存放的是Java类定义信息,与垃圾收集器要收集的Java对象关系不大。Heap = { Old + NEW = {Eden, from, to} },Old 即 年老代(Old Generation),Ne原创 2017-10-23 20:49:03 · 319 阅读 · 0 评论 -
JVM 年轻代 老年代 持久代 GC
虚拟机中的共划分为三个代:年轻代(Young Generation)、年老点(OldGeneration)和持久代(Permanent Generation)。其中持久代主要存放的是Java类的类信息,与垃圾收集要收集的Java对象关系不大。年轻代和年老代的划分是对垃圾收集影响比较大的。年轻代:所有新生成的对象首先都是放在年轻代的。年轻代的目标就是尽可能快速的收集掉那些生命周期原创 2017-10-23 20:50:30 · 485 阅读 · 0 评论 -
同步锁的三种实现与案例解析
1、同步和异步的区别和联系所谓同步,可以理解为在执行完一个函数或方法之后,一直等待系统返回值或消息,这时程序是出于阻塞的,只有接收到返回的值或消息后才往下执行其它的命令。 异步,执行完函数或方法后,不必阻塞性地等待返回值或消息,只需要向系统委托一个异步过程,那么当系统接收到返回值或消息时,系统会自动触发委托的异步过程,从而完成一个完整的流程。 同步在一定程原创 2017-12-17 17:29:43 · 7488 阅读 · 1 评论