摘要: 实现需求: 开启2个线程,1个线程对某个int类型成员变量加1,另外1个减1,但是要次序执行,即如果int型的成员变量是0,则输出01010101这样的结果 代码如下 需求稍作改变,变成: 开启4个线程,2个线程对某个int类型成员变量加1,另外2个减1,但是要次序执行,即如果int型的成员变量是0 阅读全文
posted @ 2018-05-16 21:12 无名草110 阅读(296) 评论(0) 推荐(0) 编辑
摘要: 看一个例子,背景是,银行卡里有1000块钱,在柜台取800块钱,在提款机取800块钱,理论上来说,这个是不允许的 看看实现代码 执行的结果是 1000块钱的余额居然真的取出2次800块钱了 问题的根源在于,2个线程会同时访问一个实例的某个成员变量,2条线程判断条件时成员变量的值均可能是还没取钱时候的 阅读全文
posted @ 2018-05-16 16:05 无名草110 阅读(140) 评论(0) 推荐(0) 编辑
摘要: 1.什么叫线程:线程就是程序中单独顺序的流控制。线程本身不能运行,它只能用于程序中。Java中如果我们自己没有产生线程,那么系统就会给我们产生一个线程,这个线程叫主线程,main方法就在主线程运行。2.线程与进程的区别:(1)多个进程的内部数据和状态都是完全独立的,而... 阅读全文
posted @ 2018-05-16 09:47 无名草110 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 1.线程上下文类加载器是从jdk1.2开始引入的,类Thread中的getContextClassLoader()与setContextClassLoader(ClassLoader c1),分别用来获取和设置类加载器如果没有通过setContextClassLoader方法进行设置的话,线程将继承 阅读全文
posted @ 2018-05-15 15:15 无名草110 阅读(539) 评论(0) 推荐(0) 编辑
摘要: ps:同一个加载器的命名空间里,同一个类只能被加载一次 命名空间:由所有的父加载器和自己加载器组成的空间 只有由自定义类加载器的类才能被卸载 阅读全文
posted @ 2018-05-10 17:26 无名草110 阅读(962) 评论(0) 推荐(0) 编辑
摘要: 类加载器分为4种:1.根类(Bootstrap)加载器启动类加载器主要加载的是JVM自身需要的类,这个类加载使用C++语言实现的,不开源,是虚拟机自身的一部分,它负责将 /lib路径下的核心类库或-Xbootclasspath参数指定的路径下的jar包加载到内存中2.... 阅读全文
posted @ 2018-04-11 15:45 无名草110 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 先看代码: 运行结果是 代码分析: 整个执行过程,分为加载、链接、初始化,主要分析链接和初始化阶段代码的逻辑 1.链接阶段:会为类的静态变量分配内存,并且将其初始化为 默认值,在这里,Singleton类的执行流程是 a.为i1分配内存,并且初始化为默认值0 b.为singleton分配内存,并且初 阅读全文
posted @ 2018-04-09 15:22 无名草110 阅读(352) 评论(0) 推荐(0) 编辑
摘要: ldc:将int/float/String类型的常量值从常量池中推送至栈顶(栈顶的值是即将要用的)bipush:将单字节(-128 ~ 127)的常量值从常量池中推至栈顶sipush:将一个短整型(-32768 ~ 32767)的常量值从常量池中推至栈顶iconst_... 阅读全文
posted @ 2018-04-08 15:28 无名草110 阅读(666) 评论(0) 推荐(0) 编辑
摘要: -XX:+:表示开启option选项-XX:-:表示关闭option选项-XX:=:表示将option选项的值设置为value 阅读全文
posted @ 2018-04-08 14:56 无名草110 阅读(82) 评论(0) 推荐(0) 编辑
摘要: 前文介绍了协同过滤算法和基于内容的推荐算法协同过滤算法要求要有很多用户,用户有很多操作基于内容的推荐算法用户可以不用很多,但是用户的操作也要有很多但是,如果要推荐给新用户(用户的操作不多),应该要怎样推荐呢?这里就要用到相似性推荐了相似性推荐定义:对于新用户A,没有t... 阅读全文
posted @ 2018-03-29 19:42 无名草110 阅读(1019) 评论(0) 推荐(0) 编辑