【问题标题】:how to implement threads in java如何在java中实现线程
【发布时间】:2016-12-15 15:59:46
【问题描述】:

我创建了一个移动运营商,它向服务器发送号码,我添加了一个线程,但它一直显示0,我需要做什么来增加我的线程,就像>第一次>线程 - 0,第二次> THread-1 以此类推。喜欢在imgIMG 我的代码:

package PPC4;
import java.io.*;
import java.net.InetAddress;
import java.net.Socket;
import java.util.Random;
public class Client extends Thread {
    Client() {
      // The compiler creates the byte code equivalent of super ();
    }
    Client(String name) {
        super (name); // Pass name to Thread superclass
    }
    public static Socket socket;

    public void run() {
        Random randomGenerator = new Random();
        String host = "localhost";
        int port = 25000;
        try {            
            InetAddress address = InetAddress.getByName(host);
            socket = new Socket(address, port);
             //Send the message to the server

            OutputStream os = socket.getOutputStream();
            OutputStreamWriter osw = new OutputStreamWriter(os);
            BufferedWriter bw = new BufferedWriter(osw);

            int randomInt = randomGenerator.nextInt(999999);
            String number = "069"+randomInt;
            String sendMessage = (number+1) + "\n";
            bw.write(sendMessage);
            bw.flush();
            System.out.println("The telephone number sent to the server: "+sendMessage);

            System.out.println ("The following user connected : " + getName ());
            //Get the return message from the server
            InputStream is = socket.getInputStream();
            InputStreamReader isr = new InputStreamReader(is);
            BufferedReader br = new BufferedReader(isr);
            String message = br.readLine();
            System.out.print(" " +message);
        } catch(Exception exception) {
            exception.printStackTrace();
        }
    }

    public static void main(String args[]) {
        {
            Client mt;
            if (args.length == 0)
                mt = new Client ();
            else
                mt = new Client(args[0]);
            mt.start ();
       }
    }
}

【问题讨论】:

    标签: java multithreading


    【解决方案1】:

    当您不向代码传递任何参数时,它将默认创建名为 Thread-0 的线程。如果您传递至少一个参数,它将创建名称与该参数相同的线程。

    【讨论】:

    • 我需要在哪里传递那个参数?,我不明白 :(
    • @JohnCoffey 看到你的 main 方法中的代码,if 语句?那 mt = new Client(args[0]);表示程序启动时作为参数传递的任何内容,都将传递给客户端构造函数。并在 Client 构造函数中设置线程的名称。
    • 对不起,Ivan,你能告诉我我需要改变什么吗?
    • mt = new Client(args[0]);在 mt = new Client(args[5]); ?
    • @JohnCoffey,不,代码没问题。当您启动程序时,只需键入 java Client MyName,或者如果您从 Eclipse 启动,请按照 cs.colostate.edu/helpdocs/eclipseCommLineArgs.html
    猜你喜欢
    • 1970-01-01
    • 2020-11-25
    • 1970-01-01
    • 1970-01-01
    • 2019-10-31
    • 1970-01-01
    • 2018-10-06
    • 2020-11-20
    • 1970-01-01
    相关资源
    最近更新 更多