A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

先给大家看一下程序编译的结果,肯定会感到奇怪的!!!




竟然编译结果是一团乱码!真的第一次见,如果有见过的高手,请指点一下,大家可以复制代码自己在DOS上编译试试。
修改了Con类名之后就正常了。

改代码的运行报错,如下图:

报的错误是,找不到类Con,其实是有的,看的清清楚楚的,改了类名就可以。是不是和java中的什么东东冲突了呢,
但是没有Con这么一个类呀。

代码如下:

//生产者消费者,利用等待唤醒机制
class Resource
{
//产品名称
private String name;
//产品数量
private int count=1;
boolean flag=false;
public synchronized void set(String name)
{
  if(flag)
   try{this.wait();}catch(Exception e){}
  this.name=name+count++;
  System.out.println(Thread.currentThread().getName()+":生产了"+this.name);
  flag=true;
  notify();
}
public synchronized void out()
{
  if(!flag)
   try{this.wait();}catch(Exception e){}
  System.out.println(Thread.currentThread().getName()+":消费了"+this.name);
  flag=false;
  notify();
}
}
class Pro implements Runnable
{
Resource r;
Pro(Resource r)
{
  this.r=r;
}
public void run()
{
  while(true)
  {
   r.set("烤鸭");
  }
}
}

class Con implements Runnable//问题就在这里,使用Con类名就会这样
{
Resource r;
Con(Resource r)
{
  this.r=r;
}
public void run()
{
  while(true)
  {
   r.out();
  }
}
}

class Thread5
{
public static void main(String[] args)
{
  Resource r=new Resource();
  Pro p=new Pro(r);
  Con c=new Con(r);
  Thread t1=new Thread(p);
  Thread t2=new Thread(c);
  t1.start();
  t2.start();
}
}


搜狗截图_2013-07-04_22-12-20.png (9.42 KB, 下载次数: 0)

编译结果

编译结果

评分

参与人数 1技术分 +2 收起 理由
袁梦希 + 2 很给力!

查看全部评分

6 个回复

倒序浏览
这个是dos保留字的问题,建议你修改类名,不要用con作为类名,把类名定义的更明确一些

评分

参与人数 1黑马币 +3 收起 理由
宋旭东 + 3 赞一个!

查看全部评分

回复 使用道具 举报
看到这个帖子我也测试了下,测试代码如下
  1. package com.itheima.test;
  2. public class TestCon{
  3.         public static void main(String[] args) {
  4.                
  5.         }
  6. }
  7. class Con {
  8.         /**
  9.          *
  10.          */
  11.         public Con() {
  12.                 System.out.println("Con invoke");
  13.         }
  14. }
复制代码
如果类名写Con的话,Myeclipse会提示“A class file was not written. The project may be inconsistent, if so try refreshing this project and
building it”
网上找到的方法是->Project->Clean...->选择Clean all projects->点击ok,但是不管用,这就使我想到了以前写数据库连接的时候类名写得是Conn而不是Con。
回归正题,既然一个java文件写两个类不行,为什么不写成两个java文件呢,我抱着试试的心态去建立一个新的java 文件,当输入Con类名得时候,去出现如下提示:Type name is not valid. 'Con' is an invalid name on this platform.
看来真的是Con这个名字是有问题的,Com是正常的

评分

参与人数 1技术分 +1 收起 理由
特殊服务 + 1

查看全部评分

回复 使用道具 举报
con是connect的缩写,我想应该是和这个冲突了吧
回复 使用道具 举报
什么东东
回复 使用道具 举报
什么东东
回复 使用道具 举报
改为已解决行不?我今天尽看你的贴了,费我时间你明白不?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马