一个方法里面将进行IO操作,
如何保证同时只有一个线程能使用该方法里面的资源?例如:
class TestM {
public TestM() {}
public void TestMethod() {
try {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = null;
System.out.println("Enter your value:");
str = br.readLine();
System.out.println("your value is :" + str);
} catch (Exception e) {
e.printStackTrace();
}
}
}
/*
synchronized TestMethod(){..}不行,当创建多个对象时,每个对象调用该方法都可以到达 TestMethod()内部
*/ (如何在线程里面同步 或者在TestM里面弄个锁对象?)
回答望给代码实例,谢谢
如何保证同时只有一个线程能使用该方法里面的资源?例如:
class TestM {
public TestM() {}
public void TestMethod() {
try {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = null;
System.out.println("Enter your value:");
str = br.readLine();
System.out.println("your value is :" + str);
} catch (Exception e) {
e.printStackTrace();
}
}
}
/*
synchronized TestMethod(){..}不行,当创建多个对象时,每个对象调用该方法都可以到达 TestMethod()内部
*/ (如何在线程里面同步 或者在TestM里面弄个锁对象?)
回答望给代码实例,谢谢
private static String lock="lock";
public TestM() {}
public void TestMethod() {
synchronized(lock) {
try {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = null;
System.out.println("Enter your value:");
str = br.readLine();
System.out.println("your value is :" + str);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}