天天看點

java 一個線程控制另一個線程

兩種方法,一個用标記變量,另一個用文法

不多說,直接代碼:

主方法一:

        send s = new send();

        s.start();

        receive r = new receive();

        r.start();

class send extends Thread {

        public void run() {

            //睡眠計數

            int s = 0;

            //重發計數

            int r = 0;

            while (flag == true && r < 3) {

                try {

                    if (s == 20) {

                        // 發送資訊

                        byteout = new PrintStream(socket.getOutputStream());

                        byteout.write(sendStart.data);

                    }

                    s++;

                    System.out.println(s);

                    sleep(500);

                } catch (IOException e) {

                    // TODO Auto-generated catch block

                    e.printStackTrace();

                } catch (InterruptedException e) {

                }

            }

            if (r == 3) {

                ShowDialog("伺服器無響應");

        }

    }

    // 業務主線程,負責接收伺服器端的消息

    class receive extends Thread {

            try {

                while (socket.isConnected()) {

                    in = socket.getInputStream();

                    in.read(content);

                    // if (收到資料) {         

                        flag = false;

                        //這個睡眠是為了給時間讓send看到标記變量已改變

                        sleep(1000);

                        byteout.close();

                        socket.close();

                          。。。。。。。。。。。。。。。

            } catch (Exception ex) {

                ex.printStackTrace();

第二種方法: