您的位置:首页 > 编程语言 > Java开发

java线程同步时,不同线程通过不同方法,访问同一资源

2013-11-16 09:45 369 查看
/*
* 线程同步锁定了对象,只能保证同一时间内只有一个线程访问那个方法,
* 不能阻止别的线程访问别的方法,要对所有访问这个资源的方法都上锁
*/
public class TT implements Runnable{

int a = 100;

public synchronized void m1() {   //锁定了本对象
a = 1000;
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("a = " + a);
}
/*
public void m2() {    //别的线程还可以访问到这个方法,改掉共享资源a的值
a = 2000;
System.out.println(a);
}
*/
public synchronized void m2() {  //给本方法也上锁,避免资源被乱访问
a = 2000;
System.out.println(a);
}

public static void main(String[] args) {
TT tt = new TT();
Thread t = new Thread(tt);
t.start();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
tt.m2();

}

@Override
public void run() {
m1();
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: