class ChuLiQiJu implements Runnable //在下面要被建立的线程
{
boolean flag = true;
ObjectInputStream Ois;
BufferedOutputStream res;
Socket s;
int friend, x, y;
public ChuLiQiJu(ObjectInputStream Ois, BufferedOutputStream res)
{
JTA.append("初始化" );
this.Ois = Ois;
this.res = res;
}
public void run()
{
//......
}
} class Response implements Runnable //这是启动了的一个线程
{
BufferedOutputStream res;
BufferedInputStream acc;
Socket s;
boolean flag = true;
int order;
public Response(Socket s)
{
this.s = s;
try
{
acc = new BufferedInputStream(s.getInputStream());
res = new BufferedOutputStream(s.getOutputStream());
}
catch(IOException e)
{
JTA.append(s.getInetAddress().getHostName() + " IO流出现异常\n");
}
}
public void run()
{
while(flag)
{
try
{
order = acc.read();
int n = new Request(order).response();
res.write(n);
res.flush();
if(n == 1)
{
new Thread(
new ChuLiQiJu( new ObjectInputStream(s.getInputStream()), res)).start(); //在这里卡住了
}
catch(Exception e)
{
}
}
}
}在Eclipse的调试里,建立新的线程的时候那个下一步的按钮就暗掉,进行不下去了……也就是说,这个线程即没有被结束,新的线程也没有被建立起来,当然也没有错误抛出……
于是我就觉得自己是不是犯了啥非常常识性的错误……比如不能在一个线程里启动另一个线程啥的……(汗
总之这个问题让我很疑惑,也不知道是咋回事希望各位能够指导一番
(嗯?莫非是客户端的问题?……)还有一个问题就是,为啥我在用BufferedOutputStream传输数字的时候要传两次对方才有反应?
有时候也会突然暴走传起一些莫名其妙的东西。。= =
本人对IO啥的基本没啥了解,希望有人能够帮我解释一下 囧
解决方案 »
- 如何实现Map接口中元素的遍历
- import的一个疑问
- [求助]关于JNI调用DLL的问题,急问
- 请问该怎么运行这个HelloWorld
- java技术
- <<java servelet programing>> 和<<java server page>>应该先学哪一本?还是两本一起学?
- 请问用什么工具开发Swing应用程序的界面比较方面?
- 请问用javaScript或vbScript可否调用页面上Applet的public函数?如何调用?
- 拜托提供一下十六进制和十进制之间数据转换的代码
- 访问数据库出现堆栈溢出,是何原因?
- 求一技术解决方案
- 散分80分,求助用java判断一个IP地址是否在一个IP段之内,并判断该IP地址是否合法,在线等待。。。。
但是你的socket应该是阻塞式的你看看是不是这个问题
①如果
new ChuLiQiJu( new ObjectInputStream(s.getInputStream()), res)).start();
以这种形式传入参数的话,基本上100%会卡住
②如果在Response类的构造方法里面和BufferedOutputStream等一起new出来,等下再传进去的话,有可能成功,不过也会直接连Response都启动不了……
③如果把ChuLiQiJu的形参改为(Socket s, BufferedOutputStream res),在其构造方法里面新建ObjectInputStream的话,也是在构造方法这里卡住了……应该说就是ObjectInputStream的构建的问题,不过到底为啥……Buffer不是一点事都没有么 orz
那多线程怎么来??? join方法干什么用的?
再说的简单一点,你的main()方法不是一个线程?你在main方法里调用另一个线程不行??