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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

菜鸟向各位学长请教一段代码  麻烦大家帮忙看看   
说是实现生产一个消费一个的流程的,不知道我哪里弄错了  怎么也调不出来  越调越乱

package studing;
class Person{
        private String name;
        private String sex;
        public boolean isempty =true;
        public String getName(){
                return name;
        }
        public void setName(String name){
                this.name=name;
        }
        public String getSex(){
                return sex;
        }
        public void setSex(String sex){
                this.sex=sex;
        }
        public void set(String name,String sex) throws InterruptedException{
                synchronized (this) {
                while(isempty){
                        System.out.println("kaishi wait");
                        this.wait();
                        this.name=name;
                        this.sex=sex;
                        isempty=false;System.out.println("isempty zhiwei false");
                        this.notifyAll();
                }       
                }
        }
        public void get() throws InterruptedException{
                synchronized (this) {
                        System.out.println("isempty  "+isempty);
                        while(!isempty){
                                System.out.println("get fangfa tongbu nei");
                                this.wait();
                                System.out.println("xingming"+getName()+",   "+"xingbie"+getSex());
                                isempty=true;
                                this.notifyAll();
                        }
                }
        }
}

class Consumer implements Runnable{
        private Person p;
        public Consumer(Person p){
                super();
                this.p=p;
        }
       
        public void run() {
                System.out.println("consumer run fangfa");
                for(int i=0;i<100;i++){
                        try {
                                p.get();
                        } catch (InterruptedException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        }
                }
        }
}

class Producer implements Runnable{
        private Person p;
        public Producer(Person p) {
                super();
                this.p=p;
                System.out.println("producer gouzao");
        }

        @Override
        public void run() {
                System.out.println("producer run fangfa");
                for(int i=0;i<100;i++){
                        if(i%2==0){
                                try {
                                        System.out.println("set liuzhao nan");
                                        p.set("刘钊", "男");
                                } catch (InterruptedException e) {
                                        // TODO Auto-generated catch block
                                        e.printStackTrace();
                                }
                        }
                        else{try {
                                System.out.println("set zhangzetian nv");
                                p.set("章泽天", "女");
                        } catch (InterruptedException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        }}
                       
                        }
               
        }}

public class shengchanxiaofei {

        public static void main(String[] args) {
                Person p =new Person();
                new Thread(new Producer(p)).start();
                new Thread(new Consumer(p)).start();

        }

}

5 个回复

倒序浏览
其实我想说  ,这代码 压根都不想看啊  太长了 看起来太痛苦 一点注释都没有  我想问下   你到底有什么问题  编译没通过,输出结果不对 输出的是什么  这样就不用看全部的代码了~~~~~~~
回复 使用道具 举报
我也看着头晕   以后再来看望他
回复 使用道具 举报
夜愿Relax 来自手机 中级黑马 2015-5-31 22:23:20
板凳
还没学到,帮顶个
回复 使用道具 举报
不写注释真是要人命啊
回复 使用道具 举报
package ing;
class Person{
        private String name;
        private String sex;
        public boolean isempty =true;
        public String getName(){
                return name;
        }
        public void setName(String name){
                this.name=name;
        }
        public String getSex(){
                return sex;
        }
        public void setSex(String sex){
                this.sex=sex;
        }
        public void set(String name,String sex) throws InterruptedException{
                synchronized (this) {
                while(isempty){
                        System.out.println("kaishi wait");
                        this.notifyAll();
                        this.name=name;
                        this.sex=sex;
                        isempty=false;System.out.println("isempty zhiwei false");
                        this.wait();
                        break;
                }        
                }
        }
        public void get() throws InterruptedException{
                synchronized (this) {
                        System.out.println("isempty  "+isempty);
                        while(!isempty){
                                System.out.println("get fangfa tongbu nei");
                                this.notifyAll();
                                System.out.println("xingming"+getName()+",   "+"xingbie"+getSex());
                                isempty=true;
                                this.wait();
                                break;
                        }
                }
        }
}

class Consumer implements Runnable{
        private Person p;
        public Consumer(Person p){
                super();
                this.p=p;
        }
        
        public void run() {
                System.out.println("consumer run fangfa");
                for(int i=0;i<100;i++){
                        try {
                                p.get();
                        } catch (InterruptedException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        }
                }
        }
}

class Producer implements Runnable{
        private Person p;
        public Producer(Person p) {
                super();
                this.p=p;
                System.out.println("producer gouzao");
        }

        @Override
        public void run() {
                System.out.println("producer run fangfa");
                for(int i=0;i<100;i++){
                        if(i%2==0){
                                try {
                                        System.out.println("set liuzhao nan");
                                        p.set("刘钊", "男");
                                } catch (InterruptedException e) {
                                        // TODO Auto-generated catch block
                                        e.printStackTrace();
                                }
                        }
                        else{try {
                                System.out.println("set zhangzetian nv");
                                p.set("章泽天", "女");
                        } catch (InterruptedException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        }}
                        
                        }
               
        }}

public class shengchanxiaofei {

        public static void main(String[] args) {
                Person p =new Person();
                new Thread(new Producer(p)).start();
                new Thread(new Consumer(p)).start();

        }

}

class Consumer implements Runnable{
        private Person p;
        public Consumer(Person p){
                super();
                this.p=p;
        }
        public void run() {
                System.out.println("consumer run fangfa");
                for(int i=0;i<100;i++){
                        try {
                                p.get();  
                        } catch (InterruptedException e) {
                       
                                e.printStackTrace();
                        }
                }
        }
}

class Producer implements Runnable{
        private Person p;
        public Producer(Person p) {
                super();
                this.p=p;
                System.out.println("producer gouzao");
        }
        Thread t = Thread.currentThread();
        @Override
        public void run() {
                System.out.println("producer run fangfa");
                for(int i=0;i<100;i++){
                        if(i%2==0){
                                try {
                                        System.out.println("set liuzhao nan");
                                        p.set("刘钊", "男");
                                         } catch (InterruptedException e) {
                                        // TODO Auto-generated catch block
                                        e.printStackTrace();
                                }
                        }
                       
                        else{try {
                                System.out.println("set zhangzetian nv");
                                p.set("章泽天", "女");
                              
                              
                        } catch (InterruptedException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        }}
                        
                        }
               
        }}

public class shengchanxiaofei {

        public static void main(String[] args) {
                Person p =new Person();
                new Thread(new Producer(p)).start();
              new Thread(new Consumer(p)).start();
        }
}

ok,你是不是想达到这个效果,自己看看问题出在哪里
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马