| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1273 人关注过本帖
标题:有关线程程序的错误
取消只看楼主 加入收藏
syuanq
Rank: 2
等 级:新手上路
威 望:3
帖 子:297
专家分:0
注 册:2006-12-11
结帖率:0
收藏
 问题点数:0 回复次数:6 
有关线程程序的错误

class A implements Runnable
{
B a=new B();
Thread zhangsan=new Thread(this);
Thread lisi=new Thread(this);
Thread wangwu=new Thread(this);
zhangsan.start();
lisi.start();
wangwu.start();
public void run()
{
if(currentThread()==zhangsan)
{
a.course(20);
}
if(currentThread()==lisi)
{
a.course(10);
}
if(currentThread()==wangwu)
{
a.course(5);
}
}
}
class B
{
int money5=3,money10=0,money20=0;
public void course(int money)
{
if(money==5)
{
money5=money5+1;
System.out.println("你给的钱刚好");
}
if(money==10)
{
while(money5<1)
{
try
{
wait();
}
catch(InterruptedException e){
}
money5=money5-1;
money10=money10+1;
System.out.println("你给我10元,我找你5元");
}
}
if(money=20)
{
while(money5<3)
{
try
{
wait();
}
catch(InterruptedException e){
}
money5=money5-3;
money20=money20+1;
System.out.println("你给我20元,我找你15元");
}
}
notifyAll();
}
}



--------------------Configuration: <Default>--------------------
F:\java\syjc\ThreadTest.java:312: 需要 <标识符>
zhangsan.start();
^
F:\java\syjc\ThreadTest.java:313: 需要 <标识符>
lisi.start();
^
F:\java\syjc\ThreadTest.java:314: 需要 <标识符>
wangwu.start();
^
3 错误

Process completed.
但是不知道是什么错?谢谢指点

搜索更多相关主题的帖子: 线程 Thread course new 
2007-10-24 13:41
syuanq
Rank: 2
等 级:新手上路
威 望:3
帖 子:297
专家分:0
注 册:2006-12-11
收藏
得分:0 
换了还是不行呢?this表示实现Runnable接口的实例啊

[url]www.[/url]欢迎大家的光临,一起交流学习
2007-10-25 12:49
syuanq
Rank: 2
等 级:新手上路
威 望:3
帖 子:297
专家分:0
注 册:2006-12-11
收藏
得分:0 
加了main方法后仍然报错哦。。。报错如下:
--------------------Configuration: <Default>--------------------
F:\java\syjc\ThreadTest.java:317: 非法的表达式开始
public void run()
^
F:\java\syjc\ThreadTest.java:332: 需要 ';'

^
2 错误

[url]www.[/url]欢迎大家的光临,一起交流学习
2007-10-25 23:16
syuanq
Rank: 2
等 级:新手上路
威 望:3
帖 子:297
专家分:0
注 册:2006-12-11
收藏
得分:0 
一直找不出到底哪里出错了

[url]www.[/url]欢迎大家的光临,一起交流学习
2007-10-25 23:16
syuanq
Rank: 2
等 级:新手上路
威 望:3
帖 子:297
专家分:0
注 册:2006-12-11
收藏
得分:0 

回楼上的。。。这样好像只启动了一个线程喔


[url]www.[/url]欢迎大家的光临,一起交流学习
2007-10-26 13:09
syuanq
Rank: 2
等 级:新手上路
威 望:3
帖 子:297
专家分:0
注 册:2006-12-11
收藏
得分:0 

class A implements Runnable
{
private B a;
public A(){
a = new B();
}
public void run()
{
if(Thread.currentThread().getName().equals("zhangsan"))
{
a.course(20);
}
else if(Thread.currentThread().getName().equals("lisi"))
{
a.course(10);
}
else if(Thread.currentThread().getName().equals("wangwu"))
{
a.course(5);
}
}
}

class B
{
public int money5=3;
public int money10=0;
public int money20=0;
public synchronized void course(int money)
{
if(money==5)
{
money5=money5+1;
System.out.println("你给的钱刚好");
}
else if(money==10)
{
while(money5<1)
{
try
{
wait();
}
catch(InterruptedException e){
}
money5=money5-1;
money10=money10+1;
System.out.println("你给我10元,我找你5元");
}
}
else if(money==20)
{
while(money5<3)
{
try
{
wait();
}
catch(InterruptedException e){
}
money5=money5-3;
money20=money20+1;
System.out.println("你给我20元,我找你15元");
}
}
notifyAll();
}
}


class ThreadUse{
public static void main(String[] args)
{
Thread zhangsan=new Thread(new A(),"zhangsan");
Thread lisi=new Thread(new A(),"lisi");
Thread wangwu=new Thread(new A(),"wangwu");

zhangsan.start();
lisi.start();
wangwu.start();
}
}
现在改为这样,不过好像用nitifyAll()方法没有让线程继续执行


[url]www.[/url]欢迎大家的光临,一起交流学习
2007-10-26 13:39
syuanq
Rank: 2
等 级:新手上路
威 望:3
帖 子:297
专家分:0
注 册:2006-12-11
收藏
得分:0 
原题目是这样的:模拟3个人排队买票,张三、李四和王五买电影票,售票员只有3张五元的钱,电影票五元钱一张。张三拿二十元一张的人民币排在李四的前面买票,李四排在王五的前面拿一张十元的人民币买票,王五拿一张五元的人民币买票。

那前面的程序应该如何改呢?

[url]www.[/url]欢迎大家的光临,一起交流学习
2007-11-02 00:43
快速回复:有关线程程序的错误
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013713 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved