首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多线程时设置SVNKit

多线程时设置SVNKit
EN

Stack Overflow用户
提问于 2010-09-13 17:16:26
回答 1查看 814关注 0票数 2

我试图使用不同的线程,使用SVNKit并行地连接到许多SVN存储库。

查看一些在线代码示例,在使用SVNKit之前,我必须使用静态方法初始化它。

代码语言:javascript
复制
DAVRepositoryFactory.setup();
SVNRepositoryFactoryImpl.setup();
FSRepositoryFactory.setup();

显然,静态方法使我在多线程环境中感到担忧。我的问题是:

  1. 可以这样并行地使用SVNKit吗?
  2. 什么时候需要调用这些设置方法?只有在软件开始时,每个线程一次,什么?

如果有人能解释我为什么要这样称呼这些方法,我也会很高兴。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-09-16 22:06:36

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

来自SVNRepositoryFactoryImpl javadoc:

在使用库之前,

只在应用程序中执行一次,就可以通过svn协议(通过svn和svn+ssh)使用存储库。

下面是一个包含2个存储库(单线程)的示例代码:

代码语言:javascript
复制
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的类:

代码语言:javascript
复制
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
    }
}

像这样使用它:

代码语言:javascript
复制
SVNRepositoryFactoryImpl.setup(); // STILL ONCE!

(new Thread(new ProcessSVN("http://svnurl1"))).start();
(new Thread(new ProcessSVN("http://svnurl2"))).start();
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3702778

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档