黑马程序员技术交流社区
标题:
多线程
[打印本页]
作者:
杨立考
时间:
2012-10-10 23:05
标题:
多线程
帮忙看下 下面标红的是命令行里面提示的问题描述,怎么解决啊?
class Demo2
{
public static void main(String[] args)
{
ZiYuan zy=new ZiYuan();
XiaoFei xf=new XiaoFei(zy);
ShengChan sc=new ShengChan(zy);
Thread th1=new Thread(xf);
Thread th2=new Thread(sc);
th1.start();
th2.start();
}
}
class ZiYuan
{
private String name;
private int Num1=1;
private int Num2=2;
private boolean flag;
public synchronized void XF(String name)
{
if(flag)
{
try{this.wait();}catch(InterruptedException e){}
}
this.name=name;
System.out.println(Thread.currentThread().getName()+"生产产品"+this.name+(Num1++));
flag=true;
this.notify();
}
public synchronized void SC(String name)
{
if(!flag)
{
try{this.wait();}catch(InterruptedException e){}
}
System.out.println(Thread.currentThread().getName()+"消费产品"+this.name+(Num2++));
flag=false;
this.notify();
}
}
class XiaoFei implements Runnable
{
private ZiYuan r;
public XiaoFei(ZiYuan r)
{
this.r=r;
}
public void run()
{
while (true)
{
r.XF("馒头");
}
}
}
class ShengChan implements Runnable
{
private ZiYuan r;
public ShengChan(ZiYuan r)
{
this.r=r;
}
public void run()
{
while (true)
{
r.SC();//提示无法将ZiYuan 中的 SC<java.lang.String>应用于<> r.SC();
}
}
}
作者:
沈佳龙
时间:
2012-10-10 23:22
r.SC();改成r.sc(“馒头") 你调用这个方法的时候,这个方法要传入参数的······
作者:
杨立考
时间:
2012-10-10 23:46
沈佳龙 发表于 2012-10-10 23:22
r.SC();改成r.sc(“馒头") 你调用这个方法的时候,这个方法要传入参数的······ ...
不行 那里不可以传参 命令行里运行会出现问题
作者:
王虎
时间:
2012-10-11 00:12
public synchronized void SC(String name)
这是你定义的方法,定义函数需要考虑两个方面:1.参数 2.返回值 你在这个方法里定义了形参即(String name)
当其他对象在调用时比如 你所说的r.SC() 里面就要传入一个实参 ,比如r.SC("你好,考拉兄") ,此时 这个实参只要是字符串类编译通过,控制台就不会报上述红色标记的错误
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2