基于物品的协同过滤算法(ItemCF)的基本思想是:给用户推荐那些和他们之前喜欢的物品相似的物品。 比如,该算法会因为你购买过《Java从入门到精通》而给你推荐《Java并发编程实战》。不过,基于物品的协同过滤算法并不利用物品的内容属性计算物品之间的相似度,二是通过分析用户的行为数据计算物品之间的相 ...
分类:
编程语言 时间:
2020-02-18 23:20:45
阅读次数:
162
解决并发情况下的容器线程安全问题的。给多线程环境准备一个线程安全的容器对象。 线程安全的容器对象: Vector, Hashtable。线程安全容器对象,都是使用 synchronized 方法实现的。 concurrent 包中的同步容器,大多数是使用系统底层技术实现的线程安全。类似 native ...
分类:
编程语言 时间:
2020-02-18 16:38:54
阅读次数:
80
链接 Java 语言特性【一】——JUC(Java 并发工具包) ...
分类:
编程语言 时间:
2020-02-18 13:18:43
阅读次数:
63
引言 JUC即java.util.concurrent,是java提供的用于多线程处理的工具类库。 打开jdk包,JUC代码就在rt.jar包中,concurrent下有atomic和locks两个package,并且还有concurrentXXX、Executor、Future、Queue等。 A ...
分类:
编程语言 时间:
2020-02-18 13:10:42
阅读次数:
104
前提 最近在看JUC线程池 的源码实现,其中了解到 的实现原理。从目前 的实现来看,虽然实现了异步提交任务,但是任务结果的获取过程需要主动调用 或者 ,而前者是阻塞的,后者在异步任务执行时间不确定的情况下有可能需要进行轮询,这两种情况和异步调用的初衷有点相违背。于是笔者想结合目前了解到的 实现原理的 ...
分类:
编程语言 时间:
2020-02-17 00:37:33
阅读次数:
73
在 Java 并发编程实践或看涉及到 Java 并发相关的代码时,经常会遇到一些线程(比如做 metrics 统计的线程等)会通过 setDaemon() 方法设置将该线程的 daemon 变量设置为 True,也就是将这个线程设置为了守护线程(daemon thread),那么什么是守护线程呢?或 ...
分类:
编程语言 时间:
2020-02-16 01:16:11
阅读次数:
92
前言 1965年,荷兰计算机科学家Dijkstra提出的信号量机制成为一种高效的进程同步机制。这之后的15年,信号量一直都是并发编程领域的终结者。1980年,管程被提出,成为继信号量之后的在并发编程领域的第二个选择。目前几乎所有的语言都支持信号量机制,Java也不例外。Java中提供了 并发工具类来 ...
分类:
编程语言 时间:
2020-02-16 00:57:48
阅读次数:
67
并发编程面试题-内存模型说下内存模型定义为什么要有内存模型为什么要重排序,重排序在什么时候排如何约束重排序规则happens-before什么是顺序一致性CAS 实现的原理,是阻塞还是非阻塞方式?什么时候用,使用时需要考虑的问题处理器和 Java 分别怎么保证原子操作保证了原子性就能保证可见性吗?f ...
分类:
编程语言 时间:
2020-02-14 10:35:22
阅读次数:
75
参考资料:《Java并发编程的艺术》 用于快速回忆,详情请看书籍原文 1. 一些概念 1.1 上下文切换 定义:任务从保存到再加载的过程 减少上下文切换 无锁并发编程:将临界资源划分给不同线程各自访问 CAS算法 最少线程原则:不创建无用的线程 协程:在单线程里面实现多任务调度(IO多路复用) 1. ...
分类:
编程语言 时间:
2020-02-13 22:46:11
阅读次数:
100
1.上下文切换 CPU通过给每个线程分配CPU时间片来实现并发,切换过程中线程的信息从保存到再加载就是一个上下文切换。由于频繁的进行上下文切换,会消耗资源,所以并发不一定比串行快。 可以通过Lmbench3测量上下文切换的时长;可以通过vmstat测量上下文切换的次数。 减少上下文切换的方法: (1 ...
分类:
编程语言 时间:
2020-02-13 00:20:41
阅读次数:
79