请先看看我写的思路,哪有问题,帮指明看完程序后,请看我写的问题。public class a implements Runnable
{
a g; //声明一个a类的引用
public static void main(String args[])
{
a d1=new a(); //第一步:声明a类的一个实例
a d2=new a(); //第二步:声明a类的实例
Thread t1=new Thread(d1); //第三步:创建线程,并进入d1对象中的监视器,然后程序执行run方法
Thread t2=new Thread(d2);
d1.g=d2;
d2.g=d1;
t1.start();
t2.start();
System.out.println("已启动");
try
{
t1.join();
t2.join();
}
catch(InterruptedException e)
{
System.out.println("发生错误");
}
System.exit(0);
}
public synchronized void run() //第四步:当前线程执行run方法中的程序
{
try
{
Thread.sleep(500); //第五步:当前线程休眠500毫秒
}
catch(InterruptedException e)
{
System.out.println("发生错误");
}
g.syncit(); //第六步:这个引用应该还没有被赋值吧?
}
public synchronized void syncit() //第七步:执行自定义方法
{
try
{
Thread.sleep(500); //当前线程休眠500毫秒
System.out.println("同步"); //输出同步
}
catch(InterruptedException e)
{
System.out.println("发生错误");
}
System.out.println("在syncit方法中");//在syncit方法中
}
}
第一个问题:Thread t1=new Thread(d1);//第三步:创建线程,并进入d1对象中的监视器,然后程序执行run方法 这样理解是否正确?第二个问题:d1.g=d2;//d1.g是什么意思?有什么作用?g是a类的一个引用把,d1也是a类的引用,只不过d1这个引用指向了一个实例对象,对吗??那么,引用.引用=引用 是什么意思???帮忙写一下整个程序的执行过程,顺便问问,java中如何调试程序,看程序的整个执行过程???
{
a g; //声明一个a类的引用
public static void main(String args[])
{
a d1=new a(); //第一步:声明a类的一个实例
a d2=new a(); //第二步:声明a类的实例
Thread t1=new Thread(d1); //第三步:创建线程,并进入d1对象中的监视器,然后程序执行run方法
Thread t2=new Thread(d2);
d1.g=d2;
d2.g=d1;
t1.start();
t2.start();
System.out.println("已启动");
try
{
t1.join();
t2.join();
}
catch(InterruptedException e)
{
System.out.println("发生错误");
}
System.exit(0);
}
public synchronized void run() //第四步:当前线程执行run方法中的程序
{
try
{
Thread.sleep(500); //第五步:当前线程休眠500毫秒
}
catch(InterruptedException e)
{
System.out.println("发生错误");
}
g.syncit(); //第六步:这个引用应该还没有被赋值吧?
}
public synchronized void syncit() //第七步:执行自定义方法
{
try
{
Thread.sleep(500); //当前线程休眠500毫秒
System.out.println("同步"); //输出同步
}
catch(InterruptedException e)
{
System.out.println("发生错误");
}
System.out.println("在syncit方法中");//在syncit方法中
}
}
第一个问题:Thread t1=new Thread(d1);//第三步:创建线程,并进入d1对象中的监视器,然后程序执行run方法 这样理解是否正确?第二个问题:d1.g=d2;//d1.g是什么意思?有什么作用?g是a类的一个引用把,d1也是a类的引用,只不过d1这个引用指向了一个实例对象,对吗??那么,引用.引用=引用 是什么意思???帮忙写一下整个程序的执行过程,顺便问问,java中如何调试程序,看程序的整个执行过程???
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货