作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试通过 SVNKit 使用不同的线程并行连接到许多 SVN 存储库。
看网上的一些代码示例,好像在使用SVNKit之前我必须使用静态方法初始化它
DAVRepositoryFactory.setup();
SVNRepositoryFactoryImpl.setup();
FSRepositoryFactory.setup();
显然,静态方法让我担心多线程环境。我的问题是:
如果有人能解释我必须调用这些方法的原因,我也会很高兴。
最佳答案
在不同线程中创建存储库实例之前,您只需调用此方法一次。
来自 SVNRepositoryFactoryImpl javadoc:
do it once in your application prior to using the library enables working with a repository via the svn-protocol (over svn and svn+ssh)
这是一个包含 2 个存储库(单线程)的示例代码:
SVNRepositoryFactoryImpl.setup(); // ONCE!
String url1 = "svn://host1/path1";
SVNRepository repository1 = SVNRepositoryFactory.create(SVNURL.parseURIDecoded(url1));
String url2 = "svn://host2/path2";
SVNRepository repository2 = SVNRepositoryFactory.create(SVNURL.parseURIDecoded(url2));
在多线程环境下,你可以创建一个实现Runnable的类:
public class ProcessSVN implements Runnable {
private String url;
public ProcessSVN(String url) {
this.url = url;
}
public void run() {
SVNRepository repository = SVNRepositoryFactory.create(SVNURL.parseURIDecoded(url));
// do stuff with repository
}
}
然后像这样使用它:
SVNRepositoryFactoryImpl.setup(); // STILL ONCE!
(new Thread(new ProcessSVN("http://svnurl1"))).start();
(new Thread(new ProcessSVN("http://svnurl2"))).start();
关于java - 多线程时设置 SVNKit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3702778/
我是一名优秀的程序员,十分优秀!