gpt4 book ai didi

java - 多线程时设置 SVNKit

转载 作者:行者123 更新时间:2023-11-30 09:53:44 25 4
gpt4 key购买 nike

我正在尝试通过 SVNKit 使用不同的线程并行连接到许多 SVN 存储库。

看网上的一些代码示例,好像在使用SVNKit之前我必须使用静态方法初始化它

DAVRepositoryFactory.setup();
SVNRepositoryFactoryImpl.setup();
FSRepositoryFactory.setup();

显然,静态方法让我担心多线程环境。我的问题是:

  1. 是否可以通过这种方式并行使用 SVNKit?
  2. 我什么时候需要调用这些设置方法?只在软件开始时,每个线程一次,什么?

如果有人能解释我必须调用这些方法的原因,我也会很高兴。

最佳答案

在不同线程中创建存储库实例之前,您只需调用此方法一次。

来自 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com