`
andyou2012
  • 浏览: 8923 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论
文章列表
从图中看到,JVM内存分为两个主要区域,一个是所有线程共享的数据区,一个是线程隔离数据区线程私有)
CountDownLatch是concuurent包里的一个工具类,它是一个计数器,它允许一个或者多个线程一直在等待,直到所有线程全部执行完成之后再执行。 CountDownLatch是什么 untDownLatch是在java1.5被引入的,跟它一起被引入的并发工具类还有CyclicBa ...
     BeanFactory很好理解是 IOC 容器的原始基本形式或者说是IOC的核心高级抽象接口形式,用来管理bean的工厂。spring中所有的bean都是用BeanFactory来进行管理的。他的作用包括1.IOC定位xml的位置;2.用来实例化bean(使用getBean()方法)。3.载入xml中bean配置并建立bean之间的依赖关系,贯穿了ioc的初始化bean和 依赖注入(部分)的过程。这里不得不提一下大家熟悉的applicationContext,他包含了beanFactory还扩展了其他很多功能,所以我们一般都用他,而忽视了beanFactory。     Factor ...
用来学习视频赚积分用的,后来厂里出了1分钟不动鼠标就暂停的版本就没用了。 纯娱乐,记录下来。 public static void main(String[] args) throws Exception { List<String> courses= new ArrayList<String>(); String encoding="GBK"; File file=new File("D:\\MyConfiguration\\Desktop\\course.txt& ...
小程序的图片上传与传统的图片上传方式有一些不一样 如果你有幸看到这篇文章,恭喜你,你可以完美解决了。 话不多说,前后端代码一并奉上: (基于springmvc ) @Controller @RequestMapping("/upload") public class UploadController { private static final Logger logger = LoggerFactory.getLogger(UploadController.class); @RequestMapping("/picture" ...
我发现平时很多人写单例都写的不明不白,东拼西凑乱七八糟的写: 有的性能上没有实现lazyload(程序启动即加载到内存) 有的线程不安全 有的代码不够简洁明了实现复杂 甚至有的连构造私有都没有 看过下面这种写法可以彻底解决上述问题,可以称之为完美单例,看完代码此贴了结。 package java.hanson.single; /** * 完美单例 * 皇叔* 2018年11月2日 */ public class Singleton { //构造私有 private Singleton(){ } //内部类,需要时才加载,并且线程安全 private ...
不卖关子,答案是具有原子性,但是在某些情况下也没有原子性。 1.具有   准确的说volatile 是具有可见性的,其核心原理是当对volatile标记的变量进行修改时,会将其他缓存的线程中的的变量值清除。当其他缓存中的线程读取此变量值时,会首先向主线程中缓存获取到消息,将新值传给当前线程并赋值。每次变量更新volatile变量时都会重复此步骤。    所以,从这种意义上来说,入门书籍《Java编程思想》告诉我们。,定义long或double变量时,如果使用volatile关键字,就会获得(简单的赋值与返回操作)原子性。 2.不具有   但是volatile有个条件,用在getAndOp ...
1.定时任务JOB   定时任务扫描数据库 ,不详述了。    优点:简单易行,支持集群操作    缺点:(1)对服务器内存消耗大。         (2)存在延迟,比如你每隔3分钟扫描一次,那最坏的延迟时间就是3分钟。         (3)数据量大时数据库损耗极大。 2.JDK的延迟队列DelayedQueue      优点:效率高,任务触发时间延迟低。      缺点:(1)服务器重启后,数据全部消失,怕宕机           (2)集群扩展相当麻烦           (3)因为内存条件限制的原因,比如下单未付款的订单数太多,那么很容易就出现OOM异常           ...
前提:        三个线程:        Thread1    Thread2    Thread3        保证按1  2  3的顺序执行线程 方法一:        使用join方法        Thread1.start();        Thread1.join();        Thread2.start();        Thread2.join();        Thread3.start(); 进阶方法:        使用 newSingleThreadExecutor       即只有一个线程的线程池,底层是遵守FIFO的,即可实现顺序执 ...
Global site tag (gtag.js) - Google Analytics