【发布时间】:2017-12-20 12:33:35
【问题描述】:
我是 Java Thread 的新手,在阅读时我可以看到线程对象上的 same instances 应该等到当前线程完成执行。 考虑我有两个 Objects ,一个是 WebApp
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;
}
}
另一个是 WebAppProeprty
class WebAppProperty implements Runnable{
private WebApp webapp;
private String propertyFile;
private String keyValue;
public String getKeyValue() {
return keyValue;
}
public void setKeyValue(String keyValue) {
this.keyValue = 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 ){
this.webapp = webapp;
this.propertyFile = propertyFile;
}
private synchronized void writeToPropertyFile(){
try{
// code for write property into text file.
}catch (Exception e) {
}
}
}
所以如果我创建两个类似的线程,第二个对象是否应该等待执行同步方法?或者它可以并行执行方法。
WebApp app1 = new WebApp("webapp1", "staging/folder", false);
WebAppProperty webappProp1 = new WebAppProperty(app1, "a.proeprties");
webappProp1.setKeyValue("keyvalue");
WebAppProperty webappProp2 = new WebAppProperty(app1, "a.proeprties");
webappProp2.setKeyValue("keyvalue");
Thread t1 = new Thread(webappProp1);
t1.start();
Thread t2 = new Thread(webappProp2);
t2.start();
注意:更新的线程访问相同的资源
如果两个用户尝试访问相同的资源,上面的代码会阻止第二个用户吗?如果没有,请帮助我正确的方法。
【问题讨论】:
标签: java multithreading concurrency java.util.concurrent