
JUC
文章平均质量分 53
Catalina_yep
这个作者很懒,什么都没留下…
展开
-
java内存模型(二)---重排序
重排序是指编译器和处理器为了优化程序性能而对指令序列进行重新排序的一种手段。原创 2021-02-02 20:59:13 · 180 阅读 · 0 评论 -
java内存模型(一)--java内存模型的基础
一.并发编程模型的两个关键问题在并发编程中,需要处理两个关键问题:线程之间如何通信及线程之间如何同步(这里的 线程是指并发执行的活动实体)。通信是指线程之间以何种机制来交换信息。在命令式编程中,线程之间的通信机制有两种:共享内存和消息传递。在共享内存的并发模型里,线程之间共享程序的公共状态,通过写-读内存中的公共状态进行隐式通信。在消息传递的并发模型里,线程之间没有公共状态,线程之间必须通过发送消息来显式进行通信。同步是指程序中用于控制不同线程间操作发生相对顺序的机制。在共享内存并发模型里,同步是显式原创 2021-02-02 19:38:15 · 135 阅读 · 0 评论 -
JUC(一)------什么是JUC
指的是java.util.concurrent包下的类和接口,用于并发编程原创 2021-01-22 14:19:07 · 204 阅读 · 0 评论 -
JUC(四)---JUC下常用的辅助类(CountDownLatch.CyclicBarrier,Semaphore)
一.CountDownLatch—计数器代码测试:public class CountDownLatchTest { public static void main(String[] args) throws InterruptedException { // 总数是6,必须要等执行完6个线程后才能执行await下面的代码 //例如:有6个学生,一定要等6个学生走完后才能关门 CountDownLatch countDownLatch = new原创 2021-01-22 15:04:24 · 204 阅读 · 1 评论 -
JUC(三)-----Callable
一.与Runnable的区别1.可以有返回值,获取返回值时可能需要等待,会阻塞2,可以抛出异常3.方法不同,run/call4.二.代码测试:public class CallableTest { public static void main(String[] args) throws ExecutionException, InterruptedException { //怎么启动Callable---用futurTask来做中间类传递 Future.原创 2021-01-22 14:51:25 · 157 阅读 · 1 评论 -
JUC(二)----解决集合类不安全的问题
一.List不安全并发下,ArrayList不安全的,会出现并发修改异常ConcurrentModificationException二. 解决办法1.用Vector类没有问题2.用Collections.synchronizedList3.用JUC包下的CopyOnWriteArrayListCopyOnWrite 写入时复制三.Set和Map不安全,用JUC下的CopyOnWriteArraySet和ConcurrentHashMap在并发下HashSet和HashMap也会原创 2021-01-22 14:37:05 · 159 阅读 · 1 评论