文档章节

Lucene学习笔记:并发、线程安全及锁机制

CuckooLong
 CuckooLong
发布于 2014/08/25 20:13
字数 451
阅读 83
收藏 0
  • 任意数量的只读属性的IndexWriter类都可以同时打开一个索引。无论这些Reader是否属于同一个JVM,以及是否属于同一台计算机都无关紧要。但需要记住:在单个JVM内,利用资源和发挥效率的最好办法是用多线程共享单个的IndexReader实例。例如,多个线程或进程并行搜索同一个索引。

  • 对于一个索引来说,一次只能打开一个Writer。Lucene采用文件锁来提供保障。一旦建立起IndexWriter对象,系统即会分配一个锁给他。该锁只有当IndexWriter对象被关闭时才会释放。注意如果你使用IndexReader对象来改变索引的话,IndexReader会作为Writer使用:必须在修改上述内容之前成功地获取Writer锁,并在被关闭时释放该锁。

  • IndexReader对象甚至可以在IndexWriter对象正在修改索引时打开。每个IndexReader对象将向索引展示自己被打开的时间点。该对象只有在IndexWriter对象提交修改或自己被重新打开后才能获知索引的修改情况。所以一个更好的选择是,在已经有IndexReader对象被打开的情况下,打开新IndexReader时采用参数create=true。这样,新的IndexReader会持续检查索引的情况。

  • 任意多个线程都可以共享同一个IndexReader类或IndexWriter类。这些类不仅是线程安全的,而且是线程友好的,即是说它们能够很好地扩展到新增线程(假定你的硬件支持并发访问,因为这些类中标识为同步的代码数并不多,仅为最小值)。

© 著作权归作者所有

CuckooLong
粉丝 0
博文 30
码字总数 6443
作品 0
沈阳
程序员
私信 提问
Java并发编程学习笔记(二)线程安全性 2

内置锁 Java提供了一种内置的锁机制来支持原子性:同步代码块(Synchronized Block)。 /* *原文出处:http://liuxp0827.blog.51cto.com/5013343/1414349 */synchronzied (lock){ //访问或修...

ponpon_
2014/05/20
0
0
读书笔记之《Java并发编程的艺术》-并发编程基础

读书笔记部分内容来源书出版书,版权归本书作者,如有错误,请指正。 欢迎star、fork,读书笔记系列会同步更新 git https://github.com/xuminwlt/j360-jdk module j360-jdk-thread/me.j360....

Hi徐敏
2015/11/11
0
8
Golang 学习笔记(06)—— 多线程

本文为转载,原文:Golang 学习笔记(06)—— 多线程 Golang 介绍 线程是cpu调度的最小单位,只有不同的线程才能同时在多核cpu上同时运行。但线程太占资源,线程调度开销大。go中的gorouti...

ChainZhang
2017/12/26
0
0
01_线程基础(一)之笔记

1.1 并发编程的学习的目的 + 我们为什么要去学习并发编程? + 第一点,这对面试非常重要,是企业面试程序员的标准,是考察要素: 1. 考察我公司技术你是否熟悉50%以上,或我们公司有特殊的技...

圣洁之子
2018/02/08
0
0
后台开发常问面试题集锦(问题搬运工,附链接)

Java基础问题 String的’+’的性能及原理 java之yield(),sleep(),wait()区别详解-备忘笔记 深入理解Java Stream流水线 抽象 & abstract关键字 Java final 修饰符知识点总结(必看篇) Java中的...

大黄有故事
2017/11/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

怎么选择数据服务器?请记住这五条

我们应当都知道“数据无价”这个词,既然数据那么主要,选择一款安全稳定的数据服务器是很有必要的,那么如何选择一款牢靠的,稳定的数据服务器呢?我们从五个方面下手,协助您体系的了解数据...

linux-tao
24分钟前
1
0
第一讲:编写TCP Socket小程序

根据下面的步骤编写TCP Socket小程序。注意:作者必须是自己的名字。结果如下: 步骤: 1、用VC建立服务器程序 创建一个win32控制台程序 上面的代码如下,编写代码的时候切换到FileView界面,...

一匹狼工作室
26分钟前
2
0
python-protobuf2uml

首先这篇文章是参考的https://github.com/vak/protobuf2uml 本篇文章都是基于python3的 下面首先我们说一下python3的安装 wget https://github.com/protocolbuffers/protobuf/releases/down...

yiduwangkai
27分钟前
1
0
mysql通过source恢复大表小计

最近迁移一个数据库,500多张表大概600多万条数据,通过navicat导出的数据,再通过source命令导入到mysql8.0 之前也做过类似的工作,但是却从来没有这么慢过,一个小时了还没有完成,之前在笔...

休辞醉倒
28分钟前
1
0
Java、Python、C++、PHP、JavaScript这5大编程语言,我究竟该选哪个?

很多朋友在后台给我留言,问:现在这么多编程语言,Python、Java、PHP、C++、JavaScript等,究竟哪种最流行?我想这应该也是你的困扰吧! 其实他们各有优势,但是对于选择困难的程序员而言,...

Java领航员
44分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部