@狮子的魂 你好,想跟你请教个问题:我正在使用jcseg,想问下JcsegTaskConfig,ADictionary,ASegment这几个对象是线程安全的吗.因为我会有大量的文本去做分词,如果放在方法内的话会内存溢出,所以我定义成了全局变量,我看了下,感觉这几个都是加载配置使用的.但是我技术不太好.怕搞错.
感谢您热心的解答.非常谢谢
1,ADictionary词库对象,一般一个项目只使用一个词库实例即可,这个可以提前创建并且加载词库,然后全局使用。
2,JcsegTaskConfig也可以提前创建然后设置好然后全局使用。
3,但是,ASegment对象不能并发调用,建议是一个线程得创建一个,也可以需要的时候随时创建,如下:
ASegment seg = SegmentFactory.createJcseg( JcsegTaskConfig.COMPLEX_MODE, new Object[]{config, dic} ); //设置要分词的内容 String str = "研究生命起源。"; seg.reset(new StringReader(str)); //获取分词结果 IWord word = null; while ( (word = seg.next()) != null ) { System.out.println(word.getValue()); }
上面的dic可以是你的全局词库对象引用,config是你的全局JcsegTaskConfig配置对象引用,然后线程内调用seg.next()直到切分完,不能并发调用seg.next()方法。
如果需要运行时修改配置,可以如下克隆:
JcsegTaskConfig newConfig = config.clone(); config.setXXX(); //config为提前创建好的全局JcsegTaskConfig对象!
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
暂无简介
文章 0 评论 0
接受
发布评论
评论(2)
感谢您热心的解答.非常谢谢
1,ADictionary词库对象,一般一个项目只使用一个词库实例即可,这个可以提前创建并且加载词库,然后全局使用。
2,JcsegTaskConfig也可以提前创建然后设置好然后全局使用。
3,但是,ASegment对象不能并发调用,建议是一个线程得创建一个,也可以需要的时候随时创建,如下:
上面的dic可以是你的全局词库对象引用,config是你的全局JcsegTaskConfig配置对象引用,然后线程内调用seg.next()直到切分完,不能并发调用seg.next()方法。
如果需要运行时修改配置,可以如下克隆: