锁机制
稚枭天卓
manu
展开
-
Java多线程 之 类锁与对象锁
对象锁 java的所有对象都含有1个互斥锁,这个锁由JVM自动获取和释放。线程进入synchronized方法的时候获取该对象的锁,当然如果已经有线程获取了这个对象的锁,那么当前线程会等待;synchronized方法正常返回或者抛异常而终止,JVM会自动释放对象锁。这里也体现了用synchronized来加锁的1个好处,方法抛异常的时候,锁仍然可以由JVM来自动释放。 类锁 对象锁是用来控制原创 2017-04-06 00:20:16 · 583 阅读 · 0 评论 -
我是一个线程
线程状态有,就绪、等待、运行。就绪是等着别人执行,等待是等待数据库执行;单独启动的线程是会被 Kill 掉的,而线程池之中的线程不会,只有在重启时才会消亡;多个线程访问共享资源,某些情况需要使用锁机制的;线程占用 CPU 太大太久产生死锁,操作系统根据算法杀死某个线程。转载 2017-10-23 11:36:22 · 319 阅读 · 0 评论 -
Java 的线程池 ExecutorService 简单介绍
做java的开发,线程是经常用的。最简单的使用大家都应该清楚,如继承Thread类、实现Runnable接口。这样,是没有问题。但是当我们需要频繁的处理一些任务时候,就要多次创建线程和处理线程关闭等回收工作。 这样比较麻烦。并且如果同时不限制线程个数,很多个任务一起执行,对性能有一定影响。所以,java提供了Executor线程池来处理并发任务,并且可以支持4种模式: 1.new Cach...原创 2017-10-23 20:16:38 · 526 阅读 · 0 评论 -
线程、多线程与线程池总结
线程:进程中负责程序执行的执行单元。一个进程中至少有一个线程。多线程:解决多任务同时执行的需求,合理使用CPU资源。多线程的运行是根据CPU切换完成,如何切换由CPU决定,因此多线程运行具有不确定性。线程池:基本思想还是一种对象池的思想,开辟一块内存空间,里面存放了众多(未死亡)的线程,池中线程执行调度由池管理器来处理。当有线程任务时,从池中取一个,执行完成后线程对象归池,这样可以避免反复创建线程对象所带来的性能开销,节省了系统的资源。http://www.jianshu.com/p/b8197dd2原创 2017-10-23 20:28:07 · 292 阅读 · 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 · 286 阅读 · 0 评论 -
JVM 年轻代 老年代 持久代 GC
虚拟机中的共划分为三个代:年轻代(Young Generation)、年老点(OldGeneration)和持久代(Permanent Generation)。其中持久代主要存放的是Java类的类信息,与垃圾收集要收集的Java对象关系不大。年轻代和年老代的划分是对垃圾收集影响比较大的。年轻代:所有新生成的对象首先都是放在年轻代的。年轻代的目标就是尽可能快速的收集掉那些生命周期原创 2017-10-23 20:50:30 · 449 阅读 · 0 评论