黑马程序员技术交流社区
标题:
关于线程中的内部类的不明.
[打印本页]
作者:
执笔梦
时间:
2013-10-23 11:50
标题:
关于线程中的内部类的不明.
//求解,谢谢.
public class Threadsynch
{
public static void main(String[] args) {
final ThreadCode tc = new ThreadCode();//说这里有错,我不知错在哪。。。也不太明白为什么要加final
new Thread(
new Runnable(){
public void run()
{
for(int i=1;i<=50;i++)
{
tc.sub(i);
}
}
}).start();
for(int i=1;i<=50;i++)
{
tc.main(i);
}
}
class ThreadCode
{
private boolean trade = true;
public synchronized void sub(int i)
{
while(!trade)
{
try {
this.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
for(int j=1;j<=10;j++)
{
System.out.println("sub thread:"+j+"次数"+i);
}
trade = false;
this.notify();
}
public synchronized void main(int i)
{
while(trade)
{
try {
this.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
for(int j=1;j<=30;j++)
{
System.out.println("main thread:"+j+"次数"+i);
}
trade = true;
this.notify();
}
}
}
作者:
寻丶丶觅
时间:
2013-10-23 12:14
new Thread()括号中为匿名内部类,且属于类Threadsynch中的局部内部类,在该内部类tc.sub(i);调用了方法内的局部变量 final ThreadCode tc = new ThreadCode();
老毕视频中说过,局部内部类访问局部变量时,要加final修饰。这个应该就是属于规范吧。
本人新手,如果说错,包涵下。
作者:
乔兵
时间:
2013-10-25 08:08
楼主你好,如果问题已解决请将帖子状态修改为提问结束,如果未解决请继续提问,谢谢合作
如果不会修改请看解释帖:
http://bbs.itheima.com/thread-89313-1-1.html
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2