java 多线程run方法的问题

来源:百度知道 编辑:UC知道 时间:2024/06/18 09:27:12
客户端与服务器问题
客户端用多线程发送3个数据去服务器端,
服务端计算这3个数据的和 并且返回

我在client中定义了DataInputStream dis = new DataInputStream()
和DataOutputStream dos new DataOutputStream()

在重写run方法时需要把 dis 和 dos 传进去,
但是run方法不能 又参数,

我应该怎么写?

1 你应该给线程传递参数,比如

new MyThread(dis,dos);

2 线程使用.start()启动,不是run(),所以run里面可以使用那个dis和dos

在这个线程类里面添加两个属性:ServerThread entends Thread
DataInputStream dis=null;
DataOutputStream dos=null;
建一个包含这两个类参数的构造方法
public ServerThread(InputStream input,OutputStream out){
input=dis;
dos=out;}
服务器控那端通过构造传参到服务器线程类,在run方法里面直接用这两个属性就可以

你说了多线程,那么你设计程序的时候就不能试图用run()来对消息内容进行传送,run()方法是干嘛的?我觉得你的问题主要出在不理解这个方法,而且你也没说你用的到底是哪个run(),是继承thread重写了里边的run还是实现runable接口里边的run。我给你以下信息,你自己根据情况看着办:
run 方法是运行线程时需要执行的代码。(你要用代码——也就是 run() 方法——来描述一个处理过程,而不是创建一个表示这个处理过程的对象。在如何理解线程方面,一直存在着争议。这取决于,你是将线程看作是对象还是处理过程。如果你认为它是一个处理过程,那么你就摆脱了“万物皆对象”的 OO 教条。但与此同时,如果你只想让这个处理过程掌管程序的某一部分,那你就没理由让整个类都成为 Runnable 的。有鉴于此,用内部类的形式将线程代码隐藏起来,通常是个更明智的选择。
在 Java 语言中,可以通过下列两种方式来实现run 方法:
1、覆盖 java.lang.Thread 的 public void run() 方法。
public class SimpleThread extends Thread {
public SimpleThread(String str) {
super(str);
}
public void r