我在测试“当一个线程进入一个对象的一个synchronized方法后,其它线程同时访问该对象的另一个同步方法?”写了个测试类,下面是我写的代码:
class SynchronizedTest {
public synchronized void synMethod() {
System.out.println("This is synMethod!");
try {
Thread.sleep(5000);
} catch(Exception e) {
e.printStackTrace();
}
}
public void noSynMethod() {
System.out.println("This is noSynMethod!");
}
}
class ThreadOne implements Runnable {
private SynchronizedTest st;
public ThreadOne(SynchronizedTest st) {
this.st = st;
}
public void run() {
st.synMethod();
}
}
class ThreadTwo implements Runnable {
private SynchronizedTest st;
public ThreadTwo(SynchronizedTest st) {
this.st = st;
}
public void run() {
st.noSynMethod();
}
}
class Test{
public static void main(String args[]) {
SynchronizedTest st = new SynchronizedTest();
ThreadOne tone = new ThreadOne(st);
ThreadTwo ttwo = new ThreadTwo(st);
Thread t1 = new Thread(tone);
Thread t2 = new Thread(ttwo);
t1.start();
t2.start();
}
}
这是正确的验证方法,我找到了。这只是第一1种情况,一共有3种情况,嘿嘿。
class SynchronizedTest {
public synchronized void synMethod() {
System.out.println("This is synMethod!");
try {
Thread.sleep(5000);
} catch(Exception e) {
e.printStackTrace();
}
}
public void noSynMethod() {
System.out.println("This is noSynMethod!");
}
}
class ThreadOne implements Runnable {
private SynchronizedTest st;
public ThreadOne(SynchronizedTest st) {
this.st = st;
}
public void run() {
st.synMethod();
}
}
class ThreadTwo implements Runnable {
private SynchronizedTest st;
public ThreadTwo(SynchronizedTest st) {
this.st = st;
}
public void run() {
st.noSynMethod();
}
}
class Test{
public static void main(String args[]) {
SynchronizedTest st = new SynchronizedTest();
ThreadOne tone = new ThreadOne(st);
ThreadTwo ttwo = new ThreadTwo(st);
Thread t1 = new Thread(tone);
Thread t2 = new Thread(ttwo);
t1.start();
t2.start();
}
}
这是正确的验证方法,我找到了。这只是第一1种情况,一共有3种情况,嘿嘿。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23737203/viewspace-659983/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/23737203/viewspace-659983/