理解同步与异步,及java中实现同步机制的方法
线程间的同步访问
线程同步机制是解决多线程访问共享资源时导致的内存不一致问题。
一般说到的hashmap是异步的,HashTable是同步的,是说hashmap是线程不安全的,hashtable是线程安全的。
线程同步访问的方法:
1.加锁
2.volatile
3.ThreadLocal
4.wait(),notify()/await(),singal()
同步/异步
同步:发送一个请求,需要等待该请求的返回才能进行下一个请求,
就类似于阻塞,像在socket通信中,read流接收数据,若没有数据,就会阻塞,直至接收到数据。
异步:发送一个请求,不需要等待返回,随时可以发送下一个请求,不需要等待,例如ajax异步刷新。
相关推荐
- 理解同步与异步,及java中实现同步机制的方法
- java 多线程注意事项 转自:https://blog.csdn.net/kkgbn/article/details/56279659 java 多线程注意事项 一,线程池的概念 二,线程资源必须通过线程池提供,不允许在应用中自行显式创建线程 三,SimpleDateFormat 是线程不安全的类,一般不要定义为static变量,如果定义为static,必须加锁,或者使用DateUtils工具类。 四,高并发时,同步调用应该去考量锁的性能损耗。 五,对多个资源、数据库表、对象同时加锁时,需要保持一致的加锁顺序,否则可能会造成死锁。 六,并发修改同一记录时, 七,多线程并行处理定时任务时, 八,使用CountDownLatch进行异步转同步操作, 九,避免Random实例被多线程使用,虽然共享该实例是线程安全的,但会因竞争同一seed 导致的性能下降。 十,通过双重检查锁(double-checked locking)(在并发场景)实现延迟初始化的优化问题隐患 十一,volatile解决多线程
- java中经常问到的面试题 1、面向对象编程的三大特性是什么? 2、String 和StringBuffer的区别 3、说出ArrayList,Vector, LinkedList的存储性能和特性 4、Collection 和 Collections的区别 5、HashMap和Hashtable的区别 6、final, finally, finalize的区别 7、Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型? 8、error和exception有什么区别? 9、abstract class和interface有什么区别? 10、List, Set, Map是否继承自Collection接口 11、swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上? 12、char型变量中能不能存贮一个中文汉字?为什么? 13、多线程有几种实现方法,都是什么?哪一种方式比较优秀?同步有几种实现方法,都是什么? 14、java中有几
- java面试题整合(持续更新) Redis是如何实现list存储的 SpringMVC的优势、基本原理以及大概的流程 JSP和servlet 的区别 Java中是 怎么解析xml的 MySQL数据库的索引有哪几种?有什么区别? class.forName是什么意思 几种造线程池的方法,区别 ? 面向服务通过什么样的方式实现? 消息中间件 acitveMQ 的作用、原理?几种模式,每种的特点及使用问题?MQ 发送消息失败怎么办? Tomcat 集群中怎么实现共享 在数据库怎么复制表数据和表结构? From表单提交的方法、属性,数据量大的时候用什么方法提交? 服务器宕机如何处理?全部宕机如何处理? java多线程有几种实现方法?都是什么?它们的区别? JDO是 什么?说说你 对JDO的 理解 如何在Jsp中把div或table隐藏起来? TCP和UDP的区别? Servelet在多个请求时存在线程安全问题,请讲一下在servelet编程中要注意什么问题? Quartz怎么配置啊? 服务器集群和ses
- 并发编程面试题 1.进程和线程还有协程之间的关系 2.并发和并行之间的区别 3.Java中多线程实现的方式 4.Callable和Future模式 5.线程池创建的方式 6.Java当中线程状态有哪些 7.多线程中的常用方法 8.线程状态流程图 9.volatile关键字有什么用途,和Synchronize有什么区别 10.先行发生原则 11.并发编程线程安全三要素 12.进程和线程间调度算法 13.Java开发中用过哪些锁 14.synchronized关键字理解 15.CAS无锁机制 16.AQS 17.ReentrantLock底层实现 18.ReentrantLock和synchronized之间的区别 19.ReentrantReadWriteLock(读写锁) 20.BlockingQueue阻塞队列的实现方式 21.ConcurrentLinkedQueue
- java基础知识(二) 什么是java虚拟机?为什么java被称作是“平台无关的编译语言”? JDK和JRE的区别是什么? “static”关键字是什么意思?java中是否可以覆盖一个private或者是static的方法? 是否可以在static环境中访问非static变量? 同步方法和同步代码块的区别是什么? 在监视器内部,是如何做线程同步的?程序应该做那种级别的同步? 如何去报N个线程可以访问N个资源同时又不导致死锁? 为什么集合类没有实现Clonable和Serializable接口? 什么是迭代器(Iterator)? 快速失败和安全失败的区别是什么? Comparable和Comparator接口是干什么的?它们的区别? 什么是java优先级队列(Priority Queue)? Enumeration和Iterator接口的区别有哪些? System.gc()和Runtime.gc()会做什么事情? finalize()方法什么时候被调用?析构函数(finalization)的目的是
- iOS之某公司iOS开发笔试题 1、对数组中的元素去重复 2、说说以下元素的特性和作用 3、简单描述一下XIB与Storyboards,说一下他们的优缺点。 4、请把字符串"2015-04-10"格式化日期转为NSDate类型 5、在App中混合HTML5开发App如何实现的。在App中使用HTML5的优缺点是什么? 6、请描述一下同步和异步,说说它们之间的区别。 7、请简单描述一下队列和多线程的使用原理。 8、描述一下iOS的内存管理,在开发中对于内存的使用和优化包含哪些方面。我们在开发中应该注意哪些问题。 9、plist文件是用来做什么的。一般用它来处理一些什么方面的问题。 10、iOS中缓存一定量的数据以便下次可以快速执行,那么数据会存储在什么地方,有多少种存储方式? 11、请简单写出增、删、改、查的SQL语句。 最后
- java技术面试之面试题大全 Java 面试知识点总结 Java 方向如何准备 BAT 技术面试答案 (汇总版) 1.面向对象和面向过程的区别 2.Java的四个基本特性(抽象、封装、继承,多态) 3.重载和重写的区别 4.构造器Constructor是否可被override 5.访问控制符public,protected,private,以及默认的区别 7.String和StringBuffer、StringBuilder的区别 8.hashCode和equals方法的关系 9.抽象类和接口的区别 10.自动装箱与拆箱 11.什么是泛型、为什么要使用以及泛型擦除 12.Java中的集合类及关系图 13.HashMap实现原理 14.HashTable实现原理 15.HashMap和HashTable区别 16.ArrayList和vector区别 17.ArrayList和LinkedList区别及使用场景 18.Collection和Collections的区别 19.Concurrentha
- 并发编程练习题 1、简述计算机操作系统中的“中断”的作用? 2、简述计算机内存中的“内核态”和“用户态”; 3、进程间通信方式有哪些? 4、简述你对管道、队列的理解; 5、请列举你知道的进程间通信方式; 6、什么是同步I/O,什么是异步I/O? 7、请问multiprocessing模块中的Value、Array类的作用是什么?举例说明它们的使用场景 8、请问multiprocessing模块中的Manager类的作用是什么?与Value和Array类相比,Manager的优缺点是什么? 9、写一个程序,包含十个线程,子线程必须等待主线程sleep 10秒钟之后才执行,并打印当前时间; 10 、 写一个程序,包含十个线程,同时只能有五个子线程并行执行; 12、写一个程序,使用socketserver模块,实现一个支持同时处理多个客户端请求的服务器,要求每次启动一个新线程处理客户端请求
- java 多线程 一个博客 Java多线程之~~~线程安全容器的非阻塞容器 Java多线程之~~~Fork/Join框架的同步和异步 使用Java7提供的Fork/Join框架 Java多线程~~~ScheduledThreadPoolExecutor 计划任务类的使用 Java多线程之~~~Callable接口获得返回值 Java多线程之~~~使用ThreadPoolExecutor来创建线程 Java多线程之~~~使用Exchanger在线程之间交换数据 Java多线程之~~~Phaser重写onAdvance方法 Java多线程之~~~Phaser类实现任务的同步 Java多线程之~~~CyclicBarrier 类的使用 ava多线程之~~~使用CountDownLatch来同步多个线程实现一个任务 Java多线程~~~使用信号量来控制资源获取 Java多线程开发之~~~多条件Condition接口的使用 Java多线程之~~~ReadWriteLock 读写分离的多线程实现 Java多线
- vue-router 基本使用 vue-router 基本使用
- 怎么把json中的 date元素 LongGoodsName 批量获取出来呢