黑马程序员技术交流社区
标题:
线程中找不到符号的错误提示
[打印本页]
作者:
刘文飞
时间:
2012-11-16 10:58
标题:
线程中找不到符号的错误提示
本帖最后由 刘文飞 于 2012-11-16 18:52 编辑
class Ticket implements Runnable
{
private static int tick = 100;
boolean flag = true;
public void run(){
if(flag)
{
while(true)
{
synchronized(this)
{
if(tick>0)
{
try{Thread.sleep(10);}catch(InterruptedException e){e.printStackTrace();}
System.out.println("======code=====" + Thread.currentThread().getName() + tick--);
}
}
}
}
else
{
while(true)
{
show();
}
}
}
private synchronized void show()
{
if(tick>0)
{
try{Thread.sleep(10);}catch(InterruptedException e){e.printStackTrace();}
System.out.println("======show=====" + Thread.currentThread().getName() + tick--);
}
}
}
public class StaticMethodDemoMe
{
public static void main(String args[])
{
Runnable run = new Ticket();
Thread t1 = new Thread(run);
Thread t2 = new Thread(run);
t1.start();
try{Thread.sleep(10);}catch(Exception e){}
run.flag = false;//找不到符号
t2.start();
}
}
复制代码
G:\hezi\Code>javac StaticMethodDemoMe.java
StaticMethodDemoMe.java:46: 错误: 找不到符号
run.flag = false;//找不到符号
^
符号: 变量 flag
位置: 类型为Runnable的变量 run
1 个错误
作者:
古银平
时间:
2012-11-16 12:19
41.Runnable run = new Ticket();这是多态的体现,对于多态类中的变量在编译和运行时都看的是左边,那么run.flag = false,编译时会检查的是父类Runnable中是否有flag属性,没有编译报错
作者:
刘文飞
时间:
2012-11-16 12:39
古银平 发表于 2012-11-16 12:19
41.Runnable run = new Ticket();这是多态的体现,对于多态类中的变量在编译和运行时都看的是左边,那么run ...
哦,这个得向下转型回来,不然就不使用多态了。
作者:
王玮
时间:
2012-11-16 15:29
runnable 里面没有flag 多态只是针对方法
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2