public class ThreadTest5
{
public static void main(String args[])
{
MeTest metest=new MeTest();
MeThreadTest m=new MeThreadTest(metest);
MeThreadTest2 e=new MeThreadTest2(metest);
m.start();
e.start();
}
}
class MeTest
{
private Object obj=new Object();
public void method1()
{
synchronized(obj)//synchronized代码块
{
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 void method2()
{
synchronized(obj)
{
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 MeThreadTest extends Thread
{
private MeTest metest;
public MeThreadTest(MeTest metest)
{
this.metest=metest;
}
@Override
public void run() {
// TODO Auto-generated method stub
this.metest.method1();
}
}
class MeThreadTest2 extends Thread
{
private MeTest metest;
public MeThreadTest2(MeTest metest)
{
this.metest=metest;
}
@Override
public void run() {
// TODO Auto-generated method stub
this.metest.method2();
}
}
synchronized代码块对线程的访问进行上锁
最新推荐文章于 2025-04-02 00:16:22 发布