- 博客(6)
- 收藏
- 关注
原创 Java Atomic 包总结
我们知道volatile修饰的变量可以实现基本的加载和赋值的原子性,但是对于像i++等操作就不能保证原子性了,在JDK1.5之前我们只能通过synchronized(阻塞的方式)实现这些复合操作的原子性,在JDK1.5中java.util.concurrent.atomic 包提供了若干个类能实现对int,long,boolean,reference的几个特殊方法非阻塞原子性,这一系列类的主要基于...
2012-03-21 23:08:02 68
原创 隐式(Synchronized)锁和显式(java.util.Lock)锁
为了控制多个线程按照正确的顺序来访问共享数据,Java提供了提供了两种锁方案 1.隐式锁(Synchronized) 这一种就是比较大家熟悉的synchronized关键字,因为Java中每个对象都实现了lock的功能,所以synchronized正是利用了这一特性,来控制并发访问.使用synchronized关键字可以保证使用同一个锁的方法或代码块在不同的线程里执行时是原子的即不...
2012-03-18 22:56:42 161
原创 多线程编程点滴&volatile
为什么基于多线程的程序会出现同步问题,根源在于多个程序之间会共享数据,没有数据共享的或只共享只读数据的多线程程序是不需要去考虑同步的.而现实中这样的状态比较少见,常见的多线程都会读写共享数据,基于此,就需要对涉及到共享数据操作的方法进行同步,何为同步就是依靠一定的机制让线程按照次序来操作数据,防止出现读脏数据等情况出现.类似常见的存取款程序,必须严格控制账户这个共享信息的访问次序. 所以要正...
2012-03-14 00:19:00 69
原创 Thread 重要方法总结
1.isAlive() 线程已经调用了start方法且没有结束 返回true时,线程对应于Runnable,Waiting,Timed_Waiting,Blocked四种State,[b]不要以为 只是对应于Runnable状态[/b] 返回false时,线程对应于New,Terminated两种状态 2.isInterrupted() 线程是否int...
2012-03-09 22:33:04 152
原创 Java线程的状态
Java虚拟机中线程的状态可以为且同时只能为以下6种之一,这些状态只是JVM定义的线程状态,不代表任何操作系统的线程状态. 1.NEW 线程被创建了,但没有调用start()方法 Thread t = new TestThread(); //创建线程,此时处于NEW状态 2.RUNNABLE 线程处于(可)运行状态,但也可能在等待CPU等资源 ...
2012-03-09 22:21:50 47
Wait 和 Notify
wait,notify,notifyAll 是Object的方法,用于线程间(确切的讲是需要使用同一个锁的线程间)的通信.只有该对象锁的owner线程才可以调用这几个方法,否则会抛出异常. 1.wait() ,wait(sometime) 该方法会使当前线程释放已经获得的锁,进入对该锁的等待状态(wait状态),在如下几种情况下才能重新进入(blocked)状态 a.另外一...
2012-03-07 20:06:10 86
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人