JSCHライブラリを使用してリモートロケーションプロパティファイルを読み書きするためのアプリケーションを作成しました。javaを使用してファイル操作を同期する方法は?同期またはロック?
書き込み操作を同期します。
これにより、ユーザは、「A」と言うのWebアプリケーションのプロパティファイルにに他のすべてのユーザーの書き込みしようとするとこれは私が
欲しいものです
class WebApp{ private String webappName; private boolean isQA = false; private String path ; public WebApp(String name , String path , boolean isQA){ this.webappName = name; this.path = path; this.isQA = isQA; } public String getWebappName() { return webappName; } public void setWebappName(String webappName) { this.webappName = webappName; } public boolean isQA() { return isQA; } public void setQA(boolean isQA) { this.isQA = isQA; } public String getPath() { return path; } public void setPath(String path) { this.path = path; } } class WebAppProperty implements Runnable{ private WebApp webapp; // webapp-1 private String propertyFile; // server.properties private String keyValue; public String getPropertyFile() { return propertyFile; } public void setPropertyFile(String propertyFile) { this.propertyFile = propertyFile; } @Override public void run(){ writeToPropertyFile(); } public WebAppProperty(WebApp webapp , String propertyFile,String keyValue){ this.webapp = webapp; this.propertyFile = propertyFile; this.keyValue = keyValue; } private void writeToPropertyFile(){ try{ // code for writing key value pair into remote file }catch (Exception e) { } } }
、私のコードです同じwebappの同じファイルに書き込もうとする人は待たなければならないが、別のユーザーが別のWebapp上の同じWeb Appまたは同じ名前のファイルに書き込むことができる。
これらのすべての作業を同期メソッドで実行できますか?どのようにWebアプリケーションとプロパティファイルを識別しますか?
読み取りと書き込みの両方の操作を同期させる必要がありますか?
このシナリオではロックを実装する方法は?
注:次のように私は、並行性に関するさまざまな質問を見ていたが、それらは、なぜ新しい質問をしています私の疑問をクリアしていない、この
いいえ 'synchronized'は役に立ちません。あなたはあなたの選択肢を制限するアプローチを選択します。私が見るのはロックファイルだけです。特別なファイルが存在することを確認し、それが作成されていない場合は、プロパティファイルを変更して「ロック」ファイルを削除してください。 – talex
@talex私はロックの実装をチェックしましたが、紛らわしいのは、同じファイルだけで書き込み操作をロックする方法のようなものですか?スレッドがファイルAに書き込もうとする場合他のスレッドはファイルAに書き込むことはできませんが、ファイルA以外のファイルに書き込むことはできますか?ロックを使用するとどうなりますか?私が理解したことは、実行している操作をロックすることができるということです。 –
@AnsarSamadは、WebAppPropertyインスタンスを作成して実行する部分を共有できますか? –