Java的多线程+Socket 后台 Ver 2.0
package com.wulala;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class JavaThreadCreationAndRun {
public static void main(String[] args) {
JavaThreadCreationAndRun jtca = new JavaThreadCreationAndRun();
jtca.startServer();
}
public void startServer() {
ServerSocket ss = null;
try {
ss = new ServerSocket(9999);
} catch (IOException e) {
e.printStackTrace();
}
UpdateMySQL updateMySQL;
while (true) {
Socket socket = null;
try {
socket = ss.accept();
updateMySQL = new UpdateMySQL(socket);
Thread thread = new Thread(updateMySQL);
thread.start();
} catch (IOException e1) {
System.out.println("client disconnected");
try {
socket.close();
} catch (IOException e) {
System.out.println("close socket false: " + e.getMessage());
}
}
}
}
//请无视下面这个内部类.
static class Helper implements Runnable {
private final String message;
public Helper(String _message) {
this.message = _message;
}
private void doSomething(String meesage) {
System.out.println("The doSomethig method was executed by thread:" + Thread.currentThread().getName());
System.out.println("Do something with " + message);
}
@Override
public void run() {
for (int i = 0; i < 2; i++) {
doSomething(message);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
把进程的继承类独立出来了:
package com.wulala;
import java.io.IOException;
import java.io.InputStream;
import java.net.Socket;
public class UpdateMySQL extends Thread {
private InputStream is = null;
byte b[] = new byte[1024];
int readCount = 0;
ExecuteDML edml;
public UpdateMySQL(Socket socket) {
edml = new ExecuteDML();
try {
edml.initParam("dbconfig.properties");
} catch (Exception e2) {
System.out.println("init deml fail: " + e2.getMessage());
}
try {
is = socket.getInputStream();
} catch (IOException e1) {
System.out.println("getInputStream exception: " + e1.getMessage());
}
try {
readCount = is.read(b);
System.out.println("readCount is " + readCount);
} catch (IOException e1) {
System.out.println("readCounter fail: " + e1.getMessage());
} catch (Exception e) {
try {
is.close();
} catch (IOException e1) {
System.out.println("is close exeption: " + e1.getMessage());
}
// pw.close();
try {
socket.close();
} catch (IOException e1) {
System.out.println("socket close exeption: " + e1.getMessage());
}
System.out.println("socket exeption: " + e.getMessage());
}
}
@Override
public void run() {
String str;
str = new String(b);
str = str.trim();
System.out.println("Client Socket Message:" + str);
String deviceID = "";
int activate = 0;
if (str.length() > 8 && (str.length() < 15)) {
int insertResult = 0;
// ExecuteDML edml = new ExecuteDML();
deviceID = str.substring(0, 8);
activate = Integer.valueOf(str.substring(8));
try {
insertResult = edml.insertWXData(deviceID, activate);
} catch (Exception e) {
System.out.println("insert problem" + e.getMessage());
}
// System.out.println("deviceID: " + deviceID + " activate: " +
// activate);
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
System.out.println("sleep problem..");
}
}
}
重新把多线程看了一下, 现在基本知道怎么监控线程的情况了, 可惜还是没有在Cent OS上面安装Java SDK(公司网速慢成狗), 所以没法在生产用服务器上用jstack监控, 回头想办法把jdk的rpm倒腾到生产服务器上去, 试试监控.
现在主要是用netstat跟ps看状态了, ps看到的总是没问题的, 进程还在, netstat -an|grep 9999看到的如果是一堆的WAIT_TO_CLOSE什么的, 就嗝了.
继续观察吧.
Java的多线程+Socket 后台 Ver 2.0的更多相关文章
- Java的多线程+Socket 后台
打包好可执行的jar文件之后, 用ftp上传到服务器, 用nohup命令, 让这个服务器在后台运行, 并将输出重定向到log文件中, 命令是: #nohup java -jar MTSServer.j ...
- Java的多线程+Socket
客户端: package com.wulala; import java.io.FileOutputStream;import java.io.IOException;import java.io.I ...
- Java多线程 Socket使用
点我跳过黑哥的卑鄙广告行为,进入正文. Java多线程系列更新中~ 正式篇: Java多线程(一) 什么是线程 Java多线程(二)关于多线程的CPU密集型和IO密集型这件事 Java多线程(三)如何 ...
- Java 多线程 socket 取款例子 runnable callable
socket部分参考 http://blog.csdn.net/kongxx/article/details/7259465 取款部分参考 http://blog.csdn.net/dayday198 ...
- Unable to open debugger port (127.0.0.1:51554): java.net.SocketException "socket closed"
刚开始使用IDEA 总是有各种各样奇葩的问题 启动报错: Unable to open debugger port (127.0.0.1:51554): java.net.SocketExceptio ...
- IDEA项目启动报Unable to open debugger port (127.0.0.1:51554): java.net.SocketException "socket closed"
启动报错: Unable to open debugger port (127.0.0.1:51554): java.net.SocketException "socket closed&q ...
- IntelliJ IDEA 启动tomcat 报错: idea Unable to open debugger port (127.0.0.1:58233): java.net.SocketException "socket closed"
debug启动项目弹出提示 Error running omp: Unable to open debugger port (127.0.0.1:50812): java.net.SocketExce ...
- Unable to open debugger port (127.0.0.1:63959): java.net.SocketException "socket closed",编译过来就是无法打开调试器端口,套接字已关闭
最开始的预测: 这台笔记本操作系统是win10专业工作站版,debug启动项目,provide项目完美启动成功,然后consumer项目报错:Unable to open debugger port ...
- java程序报错:Unable to open debugger port (127.0.0.1:63959): java.net.SocketException "socket closed",编译过来就是无法打开调试器端口,套接字已关闭
报错:Unable to open debugger port (127.0.0.1:63959): java.net.SocketException "socket closed" ...
随机推荐
- 使用Docker搭建consul集群+registrator实现服务自动注册。
准备工作:10.173.16.83 master10.172.178.76 node110.171.19.139 node210.162.204.252 node3 一.安装consul-cluste ...
- uwsgi + nigix + django的样式展示
编辑添加黄色部分 是你的项目目录 在你的项目目录写的静态文件 内的样式调用的是static 如果不是 请改名 [root@ayibang-server s10day11]# vim /etc/ng ...
- MVC部署 - 错误集锦
一.MVC部署后直接显示文件列表,路由未生效,效果如下: 处理方法为:Web.Config修改一下配置: <system.webServer> <validation validat ...
- shell中引用其他脚本的方法
在Shell中引用其他脚本的方法是source filename.sh 或 . filename.sh 注意: . 和 filename.sh之间必须有空格
- 第一个Json.Net Demo
//序列化 private void btnShow_Click(object sender, EventArgs e) { DataTable dt = new DataTable(); DataC ...
- Java基础之一组有用的类——使用正则表达式搜索子字符串(TryRegex)
控制台程序. 正则表达式只是一个字符串,描述了在其他字符串中搜索匹配的模式.但这不是被动地进行字符序列匹配,正则表达式其实是一个微型程序,用于一种特殊的计算机——状态机.状态机并不是真正的机器,而是软 ...
- Python:安装mssql模块功能,并实现与sqlserver连接、查询
由于我系统是x64系统,所以下载python2.7 x64.下载地址:https://www.python.org/downloads/release/python-2712/, 经过测试发现这个版本 ...
- Java数组(初学者必看)
数组无论在哪种编程语言中都算是最重要的数据结构之一,同时不同语言的实现及处理也不尽相同.但凡写过一些程序的人都知道数组的价值及理解数组的重要性,与链表一道,数组成为了基本的数据结构.尽管Java提供了 ...
- SQL语句执行时间测试
select getdate()--开始执行时间 要执行的SQL语句 select getdate() --结束时间
- Codeforce Round #219 Div2
妈蛋,C题又没搞出来! 看上去很简单的一题 到是这次的题目意思都比较容易懂,C没弄出来时,回去看了下A,以为来不及了,没想到这次的手速还是可以的7分钟搞出来了,因为太简单- -! A:大于两倍的不行- ...