线程
liujn347
这个作者很懒,什么都没留下…
展开
-
线程安全与线程不安全区别
1.线程安全:多线程同时访问一份数据时,采用加锁机制,只有一个线程操作完数据后,其他的线程才能继续操作2.线程不安全:多线程同时访问一份数据时,没有采用加锁机制,产生脏数据原创 2013-11-29 22:12:19 · 443 阅读 · 0 评论 -
wait和notify
public class Input implements Runnable { private Person person; private int nameIndex; public Input(Person person) { this.person = person; } public void run() { sy原创 2014-08-28 13:42:56 · 494 阅读 · 0 评论 -
ThreadLocal使用
public class ThreadLocalDemo implements Runnable { ThreadLocal threadLocal = new ThreadLocal(); public void run() { System.out.println("thread:" + Thread.currentThread().getName() + "原创 2014-04-18 16:08:46 · 482 阅读 · 0 评论 -
并发编程 — 并发数据结构
并发编程系列文章: 初解线程池:http://ray-yui.iteye.com/blog/2072463 详解线程池:http://ray-yui.iteye.com/blog/2075311 并发数据类型:http://ray-yui.iteye.com/blog/2080454 并发数据结构:http://ray-yui.ite转载 2014-06-27 14:00:49 · 976 阅读 · 0 评论 -
java阻塞队列以及非阻塞队列
1.阻塞队列:submit(producer1); executorService.submit(producer2); executorService.submit(producer1); Consumer consumer = new Consumer("consumer1"); executorServi原创 2014-04-16 23:44:43 · 1908 阅读 · 0 评论 -
JAVA CAS原理深度分析
看了一堆文章,终于把JAVA CAS的原理深入分析清楚了。感谢GOOGLE强大的搜索,借此挖苦下百度,依靠百度什么都学习不到! 参考文档:http://www.blogjava.net/xylz/archive/2010/07/04/325206.htmlhttp://blog.hesey.net/2011/09/resolve-aba-by-atomicstamp转载 2014-05-22 11:24:07 · 577 阅读 · 0 评论 -
线程的生命周期
1.新建 Threadd thread = new Thread(Runnable);2.就绪 thread.start();将线程fang原创 2014-04-12 15:32:27 · 470 阅读 · 0 评论 -
java守护线程与用户线程区别
1.java代码中创建一个线程就是用户线程,守护线程由jvm创建,GC(laji)原创 2014-04-12 14:42:23 · 637 阅读 · 0 评论 -
Semaphore信号量
Sempublic class SemaphoreDemo { public static void main(String[] args) { ExecutorService executorService = Executors.newFixedThreadPool(1); final Semaphore semaph原创 2014-05-10 21:47:08 · 474 阅读 · 0 评论 -
concurrent包Callable接口
1.Callable接口与Runnable接口区别:(1).都能实现原创 2014-05-10 17:23:44 · 950 阅读 · 0 评论 -
多线程volatile实现
如何避免这种情况? 解决以上问题的方法: 一种是 操作时, 加上同步。 这种方法, 无疑将大大降低程序性能, 且违背了volatile的初衷。 第二种方式是, 使用硬件原语(CAS), 实现非阻塞算法 从CPU原语上, 支持变量级别的低开销同步。 CPU原语-比较并交换(CompareAndSet),实现非阻塞算法 什么是CAS转载 2014-05-10 16:22:08 · 549 阅读 · 0 评论 -
线程stop与suspend区别
1.stop()它会解除由线程获取的所有锁定,而且如果对象处于一种不连贯状态,那么其他线程能在那种状态下检查和修改它们。结果很难检查出真正的问题所在。suspend()方法容易发生死锁。调用suspend()的时候,目标线程会停下来,但却仍然持有在这之前获得的锁定。此时,其他任何线程都不能访问锁定的资源,除非被"挂起"的线程恢复运行。对任何线程来说,如果它们想恢复目标线程,同时又试图使用任何一个锁原创 2014-04-17 22:29:16 · 2550 阅读 · 0 评论 -
线程间通信
1.多线程间使用共享变量原创 2014-04-16 21:48:52 · 454 阅读 · 0 评论 -
固定线程数demo
public class TestFixedThreadPool { public static void main(String[] args) { ExecutorService executorService = Executors.newFixedThreadPool(3); //最多运行3个线程的线程池 for (int i = 0; i原创 2014-04-16 15:55:50 · 513 阅读 · 0 评论 -
线程死锁demo
public class DeadLock implements Runnable { //为什么用stobject private static Object object1=new Object(); private static Object object2=new Object(); private int flag; public void run(原创 2014-04-15 00:35:40 · 535 阅读 · 0 评论 -
concurrent CountDownLatch
public class CountDownLatchDemo { private static SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); public static void main(String[] args) { CountD原创 2014-04-15 01:02:41 · 461 阅读 · 0 评论 -
java锁机制
1.在Java程序运行时环境中,JVM需要对两类线程共享的数据进行协调:1)保存在堆中的实例变量2)保存在方法区中的类变量2.一个线程对象要想控制共享资源,需要获得代码块的对象锁,jvm会给每一个线程对象分配一个加锁计数器,每次线程对象获得共享代码块,则计数器加1,线程退出共享代码块,则计数器减13.如果每个多线程对象都有自己的对象锁,那么会导致共享资源不互斥4.如果每原创 2014-03-06 11:07:16 · 488 阅读 · 0 评论 -
CachedThreadPool与FixedThreadPool
1.一个线程实例加入CachedThreadPool时,如果该线程实例不存在CachedThreadPool,则创建一个,CachedThreadPool中线程实例默认超时时间为60s,超过这个时间,线程实例停止并被移出CachedThreadPool,适用于生存期短、异步的线程任务。2.FixedThreadPool中最多只有固定数目线程存在,一个线程实例请求加入FixedThreadPoo原创 2013-12-07 11:23:30 · 4170 阅读 · 0 评论 -
Callable接口以及CyclicBarrier实现list数据求和
public class CountListIntegerWithCallable { public static void main(String[] args) { int threadNum = 10; ExecutorService executorService = Executors.newFixedThreadPool(threadNum);原创 2014-05-10 18:17:17 · 785 阅读 · 0 评论