java多线程高并发
houyidg
这个作者很懒,什么都没留下…
展开
-
多线程编程3.3-----synchronzied关键字为类名.class
package zhu; /*** * 目的: * 保证线程安全 加上synchronized(多线程操作的对象)锁 * 静态方法 synchronized 隐含的锁标识是类名.class * 以下同步其实是在相同时间间隔内同步 所有需要在一个线程执行前延迟几分钟,并没有正真的同步、 * 特点: * 同种对象的两种方法加相同的锁 两个线程执行相应的方法 使多线程安全原创 2014-09-01 15:21:15 · 444 阅读 · 0 评论 -
两个线程执行生产 * 两线程执行消费 * 依次交替循环
import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; /* * 两个线程执行生产 * 两线程执行消费 * 依次交替循环 * lock的方法(类的方法) 针对多翻译 2014-09-01 16:42:18 · 587 阅读 · 0 评论 -
多线程编程1.2-----Map封装各线程独享数据
package zhu; /** * 需求: * 为保证同一个线程调用的函数所使用的资源相同 * 也就是 线程独享自己的数据 比如:银行转账 同一线程内共享连接,不同线程独立连接 *方案: * 使用map集合封装 线程的变量 和 线程对应的名字 * 可以使用ThreadLocal类解决 */ import java.util.HashMap; i原创 2014-09-01 14:52:59 · 479 阅读 · 0 评论 -
多线程编程8---ArrayBlockingQueue解决子循环5次主循环10次 一次交替10次
package zhu.suo; import java.util.concurrent.ArrayBlockingQueue; /** * 子线程循环10次,接着主线程循环20次,接着又回到子线程循环10次,主线程循环20次,依次交替循环5次 * 使用阻塞队列:ArrayBlockingQueue类 方法 put(e) take() 若不满足条件则线程阻塞 *原创 2014-09-01 16:07:15 · 1363 阅读 · 0 评论 -
多线程编程3.2-------synchronzied2
package zhu; /*** * 目的: * 保证线程安全 加上synchronized(多线程操作的对象)锁 * 对方法枷锁 锁的标识就是this * 以下同步其实是在相同时间间隔内同步 所有需要在一个线程执行前延迟几分钟,并没有正真的同步 * 特点: * 同种对象的两种方法加相同的锁 两个线程执行相应的方法 使多线程安全 * */ public c原创 2014-09-01 15:08:44 · 388 阅读 · 0 评论 -
多线程编程1-----ThreadLocal
package zhu; /* * 要求: * 利用Thread的局部变量类ThreadLocal 封装数据 * 然后再赋值数据 实现一个线程有多分相同的变量,而且各线程之间的变量值互不影响 * 官方应用场景: * 在Java的多线程编程中,为保证多个线程对共享变量的安全访问,通常会使用synchronized来保证同一时刻只有一个线程对共享变量进行操作。 * 这种情况下原创 2014-09-01 14:46:36 · 324 阅读 · 0 评论 -
多线程编程5----一个线程执行完返回值CallableAndFuture.java
package zhu.ThreadPools; import java.util.Random; import java.util.concurrent.Callable; import java.util.concurrent.CompletionService; import java.util.concurrent.ExecutionException; import j原创 2014-09-01 15:54:52 · 379 阅读 · 0 评论 -
多线程编程7---java5并发库集合
package zhu.suo; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.concurrent.CopyOnWriteArrayList; /* * 在一般的集合遍历中 增删集合会报错 * 除非使用java5 封装的并发库集合 ...原创 2014-09-01 16:03:08 · 435 阅读 · 0 评论 -
多线程编程9----使用读写锁模拟hibernate缓存Demo
package zhu.suo; import java.util.HashMap; import java.util.Map; import java.util.concurrent.locks.ReadWriteLock; import java.util.concurrent.locks.ReentrantLock; import java.util.concurrent.原创 2014-09-01 16:11:42 · 667 阅读 · 0 评论 -
多线程编程10----condition同步工具类的使用
package zhu.suo; import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; /* * 要求:1,2,3兄弟,1循环5次,2循环10次,3循环15次原创 2014-09-01 16:12:46 · 361 阅读 · 0 评论 -
多线程编程14---Lock类代替传统synchronzied类
package zhu.suo; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; /* * java5lock代替传统的synchronized * */ public class LockTest { public static vo原创 2014-09-01 16:22:59 · 449 阅读 · 0 评论 -
多线程面试题1
package zhu.test; /** * 子线程循环10次,接着主线程循环100次,接着又回到子线程循环10次,主线程循环100次,依次交替循环 * 50次 * * @author nn *思想: * 把互斥资源封装到一个类中 */ public class LoopTest { public static void main(String[] a原创 2014-08-18 16:47:45 · 331 阅读 · 0 评论 -
两种多线程操作共享数据的方法
package zhu.test; /** * 需求: * 使同一份数据分别进行 加1 减1 交替出现 10次 * @author nn * */ public class ThreadShareDataDemo1 { public static void main(String[] args) { final ShareDATA DataObj= new Sh原创 2014-08-18 18:12:09 · 423 阅读 · 0 评论 -
AtomicIntegerFieldUpdater多线程原子类的使用
package zhu.test; /** * 方法一:包装类的使用 * 要求: 在jdk5之后出现线程安全类 比如AtomicInteger,...AtomicIntegerFieldUpdater ,使用此类保证资源的互斥性 */ import java.util.concurrent.atomic.*; class Container { publ原创 2014-08-18 20:06:12 · 465 阅读 · 0 评论 -
Java多线程之锁
前言Java 锁也分很多中。。但这里介绍synchronize和lock区别1、synchronzie是基于jvm层面,lock是基于代码 2、synchronize块中出现异常jvm会直接释放锁,而lock出现异常必须在finally块中释放锁 3、少量进程之间的并发使用synchronize效率高,由于lock伸缩性比较强,处理大量并发效果好!原创 2015-07-10 17:56:28 · 432 阅读 · 0 评论 -
关于字符串组合等地址问题
public class Test { public static void main(String[] args) { String a = "2"+"1"; String b = "2"+"1";//在编译前 优化为"12" System.out.println(("2"+"1")==("2"+"1")); System.out.println(a==b); System原创 2014-09-01 16:42:33 · 356 阅读 · 0 评论 -
多线程编程10.1-----Condition解决面试题
package zhu.suo; import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; public class CondotionDemo { pub原创 2014-09-01 16:11:40 · 487 阅读 · 0 评论 -
多线程编程12-----CyclicBarrier同步工具类
package zhu.suo; import java.util.Random; import java.util.concurrent.BrokenBarrierException; import java.util.concurrent.CyclicBarrier; import java.util.concurrent.ExecutorService; import ja原创 2014-09-01 16:19:13 · 397 阅读 · 0 评论 -
多线程编程面试题2
package zhu.suo; /* * 2.十个线程乱序执行一个打印,每个打印需要一秒 * */ import java.util.concurrent.Semaphore; import java.util.concurrent.SynchronousQueue; public class Test2 { public static void main(St翻译 2014-09-01 16:41:08 · 486 阅读 · 0 评论 -
多线程编程15-----Semaphore类限制并发线程数
package zhu.suo; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Semaphore; import java.util.concurrent.locks.ReentrantLock;原创 2014-09-01 16:31:30 · 550 阅读 · 0 评论 -
多线程编程面试题1
package zhu.suo; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.BlockingQueue; /*1.四个线程共用4秒打印出16条日志 * * 解析: * 在print方法中 * 第一秒 四个进程同时带一个数据进入 * 同样。。 * */翻译 2014-09-01 16:38:33 · 388 阅读 · 0 评论 -
多线程编程4---面试题解法3
package zhu.test; /** * 需求: * 使同一份数据分别进行 加1 减1 交替出现 10次 * @author nn * */ public class ThreadShareDataDemo1 { public static void main(String[] args) { final ShareDATA DataObj= new Sh原创 2014-09-01 15:42:47 · 348 阅读 · 0 评论 -
多线程编程11-----CountDownLatch同步工具类的使用
package zhu.suo; import java.util.concurrent.CountDownLatch; import java.util.concurrent.CyclicBarrier; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; /*原创 2014-09-01 16:14:38 · 361 阅读 · 0 评论 -
多线程编程13-----Exchanger同步工具类实现两线程数据交换
package zhu.suo; import java.util.concurrent.Exchanger; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; /* * 两线程之间数据的交换 * */ public class ExchangerDemo原创 2014-09-01 16:20:51 · 381 阅读 · 0 评论 -
多线程编程面试题3
package zhu.suo; /* * 3.输入 1,2 2,3 2,5 3,4 输出 1,2--时间1 2,3--时间1 3,4--时间1 2,5--时间2 四个线程同时执行 //注意点: * 在System.currentMilions/1000获取时间中 出现 *翻译 2014-09-01 16:39:12 · 479 阅读 · 0 评论 -
多线程编程3.1-----synchronized关键字保证多线程互斥
package zhu; /*** * 目的: * 保证线程安全 加上synchronized(多线程操作的对象)锁 * 特点: * 同种对象的一种方法, 用多个线程执行 给方法枷锁 * @author nn * */ public class TraditionalThreadSynchronized2 { public static void main原创 2014-09-01 15:08:25 · 332 阅读 · 0 评论 -
多线程编程3-----演示多线程未同步问题
package zhu; /*** * 目的: * 为了演示多线程不安全问题 * 出现打印不完全现象 * @author nn * */ public class TraditionalThreadSynchronized { public static void main(String[] args) { new TraditionalThreadSync原创 2014-09-01 15:04:10 · 390 阅读 · 0 评论 -
多线程编程4------面试题使用资源互斥类AtomicInteger
package zhu.test; /** * 需求: * 使同一份数据分别进行 加1 减1 交替出现 10次 * 方法二 * 要求: 在jdk5之后出现线程安全类 比如AtomicInteger,...AtomicIntegerFieldUpdater ,使用此类保证资源的互斥性 */ import java.util.concurrent.atomic.*;原创 2014-09-01 15:41:24 · 527 阅读 · 0 评论 -
多线程编程6-----Executors的使用
package zhu.ThreadPools; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; public class Demo1 { public static v原创 2014-09-01 16:00:21 · 343 阅读 · 0 评论 -
多线程编程2-----TimerTask定时器类的使用
package zhu; import java.util.Date; import java.util.Timer; import java.util.TimerTask; /** * * 连环炸弹 * 需求: * 分别每隔 2 秒 、3 秒循环交替爆炸 * 特点: * 不使用循环语句,使用递归可以完成任务的交替循环 * @author n原创 2014-09-01 14:54:01 · 355 阅读 · 0 评论 -
多线程编程4-------面试题增加信号
package zhu.test; /** * 需求: * 使同一份数据分别进行 加1 减1 交替出现 10次 * @author nn * */ public class CopyOfThreadShareDataDemo2 { static int data=0; public static void main(String[] args) { Data data原创 2014-09-01 15:30:48 · 341 阅读 · 0 评论 -
java线程解析
原创 2016-08-26 02:29:44 · 311 阅读 · 0 评论