摘要: 可见性关键字(volidate): 如果对java内存模型了解较清楚的话,我们知道每个线程都会被分配一个线程栈。 线程栈里存的是对象的引用,但当前cache缓存机制,可能会把数据拷贝。 就是,命中缓存,去数据是从cache中获取,而不是从本地内存读取。 不加关键字实例: java package c 阅读全文
posted @ 2019-01-27 17:08 零度微笑 阅读(2721) 评论(0) 推荐(0) 编辑
摘要: 同步关键字(synchronized): 多线程给我们提供方便的时候,也给整个编程增加了难度,尤其是对临界资源的控制,尤为重要。 一个在操作系统课上,老掉牙的事例,就把这种情况解释的明明白白。 一对夫妻共用一张银行卡,老公呢准备出去买盒烟,一查卡里还有10000元, 但在他买烟的同时,他媳妇一下子支 阅读全文
posted @ 2019-01-27 14:54 零度微笑 阅读(505) 评论(0) 推荐(0) 编辑
摘要: 等待和通知 Object对象提供了wait( ) 方法和 notify ( ) 方法。 wait( )方法需要配对着synchronized 关键字使用。 当一个线程的资源调用 wait( )方法时,它会失去锁,然后进入等待序列。 当其他线程调用notify方法时才会重新激活。 实例: 运行结果: 阅读全文
posted @ 2019-01-27 12:05 零度微笑 阅读(332) 评论(0) 推荐(0) 编辑
摘要: 多线程优先级: 多线程优先级为1~10,数字越大,优先级越高。 一个线程不设置优先级的话,默认优先级为5; 以上,是Thread类提供的三个优先级常量。 设置优先级的方法为,Thread对象或继承了Thread类的对象,调用setPriority( )方法。 实例: 运行结果: 第1次运行结果: 优 阅读全文
posted @ 2019-01-26 16:21 零度微笑 阅读(543) 评论(0) 推荐(0) 编辑
摘要: 多线程创建: 在java里,多线程的创建方式,一是继承Thread类,一种是实现Runnable接口。 无论是哪一种线程创建方式,我们都要重写run( )方法。 只有run( )方法中的业务代码,才是线程开启后去执行的业务逻辑。 而每一个继承Thread类的类,对象实例化过程中,就可以创建一个线程。 阅读全文
posted @ 2019-01-26 15:28 零度微笑 阅读(266) 评论(0) 推荐(0) 编辑
摘要: 多线程 多线程是用来做什么的,我想举一个例子简单说明一下。 我正在工作,但是到中午了,饿了,但是去做饭就必须停下手中的工作。 而做饭又是一件非常耗时的事情,在做饭的时候,工作就处于停滞状态。 这就是串行程序的执行方式。 工作 停止工作 做饭 而随着社会的发展,外卖行业的发展,我们可以打电话订外卖。 阅读全文
posted @ 2019-01-26 15:13 零度微笑 阅读(403) 评论(0) 推荐(0) 编辑
摘要: 对象实例化过程: 1.看类是否已加载,未加载的话先初始化类。 2.在堆内存中分配空间。 3.初始化父类的属性 4.初始化父类的构造方法 5.初始化子类的属性 6.初始化子类的构造方法 实例: package com.xm.load; public class Animal { static Stri 阅读全文
posted @ 2019-01-24 09:12 零度微笑 阅读(690) 评论(0) 推荐(0) 编辑
摘要: 类的加载过程(类的初始化) 1.加载父类的静态变量 2.加载父类的静态代码快 3.加载子类的静态变量 4.加载子类的静态代码快 (其实,静态变量和静态代码块肯定是按照顺序初始化的,反正java语法不支持提前引用) 类的实例化,相当于JVM对字节码文件信息的一次扫描,并且把扫描结果分类存放到方法区中。 阅读全文
posted @ 2019-01-24 09:05 零度微笑 阅读(347) 评论(0) 推荐(0) 编辑
摘要: 1.文件流下载文件 axios实现: 注意,想要获取headers中content disposition的数据,服务端要加一个: 阅读全文
posted @ 2019-01-21 15:01 零度微笑 阅读(1211) 评论(0) 推荐(0) 编辑
摘要: vue router 带参数跳转 发送:this.$router.push({path:'/news',query:{id:row.id}}) 接收:var id=this.$route.query.id 返回上一步:this.$router.go( 1) 阅读全文
posted @ 2019-01-21 15:00 零度微笑 阅读(417) 评论(0) 推荐(0) 编辑