public class ThreadTest4
{
public static void main(String args[])
{
MyTest mytest=new MyTest();
MyThreadTest m=new MyThreadTest(mytest);
MyThreadTest2 e=new MyThreadTest2(mytest);
m.start();
e.start();
}
}
class MyTest
{
public synchronized static void method1()//此时锁的不再是该方法所对应的对象,而是对象所对应的Class对象,一个类只拥有一个Class对象
{
for(int i=0;i<10;i++)
{
try {
Thread.sleep((long)(Math.random()*1000));
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("me: "+i);
}
}
public synchronized static void method2()
{
for(int i=0;i<10;i++)
{
try {
Thread.sleep((long)(Math.random()*1000));
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("you: "+i);
}
}
}
class MyThreadTest extends Thread
{
private MyTest mytest;
public MyThreadTest(MyTest mytest)
{
this.mytest=mytest;
}
@Override
public void run() {
// TODO Auto-generated method stub
this.mytest.method1();
}
}
class MyThreadTest2 extends Thread
{
private MyTest mytest;
public MyThreadTest2(MyTest mytest)
{
this.mytest=mytest;
}
@Override
public void run() {
// TODO Auto-generated method stub
this.mytest.method2();
}
}
访问synchronized的static 方法
最新推荐文章于 2022-08-06 16:05:40 发布