<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    dream.in.java

    能以不變應(yīng)萬(wàn)變是聰明人做事的準(zhǔn)則。萬(wàn)事從小事做起,積累小成功,問(wèn)鼎大成功,是成功者的秘訣。

    必看的5個(gè)JAVA經(jīng)典實(shí)例(二)

    4.用JAVA中的多線程示例生產(chǎn)者和消費(fèi)者問(wèn)題

    package com.softeem.demo;

    class Producer implements Runnable {
        private SyncStack stack;

        public Producer(SyncStack stack) {
            this.stack = stack;
        }

        public void run() {
            for (int i = 0; i < stack.getProducts().length; i++) {
                String product = "產(chǎn)品" + i;
                stack.push(product);
                System.out.println("生產(chǎn)了: " + product);
                try {
                    Thread.sleep(200);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }

    }

    class Consumer implements Runnable {
        private SyncStack stack;

        public Consumer(SyncStack stack) {
            this.stack = stack;
        }

        public void run() {
            for (int i = 0; i < stack.getProducts().length; i++) {
                String product = stack.pop();
                System.out.println("消費(fèi)了: " + product);
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }

            }

        }
    }

    class SyncStack {
        private String[] products = new String[10];
        private int index;

        public synchronized void push(String product) {
            if (index == product.length()) {
                try {
                    wait();
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            notify();
            products[index] = product;
            index++;
        }

        public synchronized String pop() {
            if (index == 0) {
                try {
                    wait();
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            notify();
            index--;
            String product = products[index];
            return product;
        }

        public String[] getProducts() {
            return products;
        }

    }

    public class TestProducerConsumer {

        public static void main(String[] args) {
            SyncStack stack = new SyncStack();
            Producer p = new Producer(stack);
            Consumer c = new Consumer(stack);

            new Thread(p).start();
            new Thread(c).start();
        }
    }

    5.編程實(shí)現(xiàn)序列化的Student(sno,sname)對(duì)象在網(wǎng)絡(luò)上的傳輸

    package com.softeem.demo;

    import java.io.IOException;
    import java.io.ObjectInputStream;
    import java.io.ObjectOutputStream;
    import java.io.Serializable;
    import java.net.ServerSocket;
    import java.net.Socket;

    class Student implements Serializable {
        private int sno;
        private String sname;

        public Student(int sno, String sname) {
            this.sno = sno;
            this.sname = sname;
        }

        public int getSno() {
            return sno;
        }

        public void setSno(int sno) {
            this.sno = sno;
        }

        public String getSname() {
            return sname;
        }

        public void setSname(String sname) {
            this.sname = sname;
        }

        @Override
        public String toString() {
            return "學(xué)號(hào):" + sno + ";姓名:" + sname;
        }
    }
    class MyClient extends Thread {
        @Override
        public void run() {
            try {
                Socket s = new Socket("localhost", 9999);
                ObjectInputStream ois = new ObjectInputStream(s.getInputStream());
                Student stu = (Student) ois.readObject();
                String msg = "客戶端程序收到服務(wù)器端程序傳輸過(guò)來(lái)的學(xué)生對(duì)象>> " + stu;
                System.out.println(msg);
                ois.close();
                s.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (ClassNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
    class MyServer extends Thread {

        @Override
        public void run() {
            try {
                ServerSocket ss = new ServerSocket(9999);
                Socket s = ss.accept();
                ObjectOutputStream ops = new ObjectOutputStream(s.getOutputStream());
                Student stu = new Student(1, "趙本山");
                ops.writeObject(stu);
                ops.close();
                s.close();
                ss.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

    }
    public class TestTransfer {
        public static void main(String[] args) {
            new MyServer().start();
            new MyClient().start();
        }
    }

    posted on 2009-02-22 13:48 YXY 閱讀(288) 評(píng)論(0)  編輯  收藏


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲av无码专区在线观看下载| 亚美影视免费在线观看| 免费A级毛片在线播放不收费| 男女猛烈无遮掩视频免费软件| 国产成人 亚洲欧洲| 亚洲国产专区一区| **aaaaa毛片免费同男同女| 亚洲av色香蕉一区二区三区蜜桃| 永久亚洲成a人片777777| 在线观看H网址免费入口| 色多多A级毛片免费看| 国产美女精品视频免费观看| 巨胸喷奶水www永久免费| 亚洲欧美中文日韩视频| 亚洲毛片αv无线播放一区| 亚洲三级高清免费| 一级做α爱过程免费视频| 亚洲乱码在线观看| 亚洲男同帅GAY片在线观看| 在线精品免费视频无码的| 亚洲一久久久久久久久| 亚洲AV无码不卡无码| 国产大片51精品免费观看| 59pao成国产成视频永久免费| 美女黄频视频大全免费的| 亚洲精品国产肉丝袜久久| 国产偷国产偷亚洲清高动态图 | 亚洲AV色吊丝无码| 国产aⅴ无码专区亚洲av麻豆| 国产va免费精品观看精品| 99久久婷婷免费国产综合精品| 亚洲码和欧洲码一码二码三码| 亚洲第一精品在线视频| 亚洲一级毛片免费在线观看| 一区二区三区免费看| 亚洲精品国产综合久久久久紧| 午夜影视日本亚洲欧洲精品一区| 亚洲AV蜜桃永久无码精品| 丁香花在线视频观看免费 | 永久免费AV无码网站国产| 精品一区二区三区免费毛片|