import
java.io.IOException;
import
java.net.ServerSocket;
import
java.net.Socket;
public class
PoolServerBase
extends
Thread
{
protected
Socket socket;
static
PoolServerBase head =
null
;
protected
PoolServerBase next =
null
;
static protected
boolean
init
(
Class
clobj,
int
threads
) {
try
{
for
(
int
i =
0
; i < threads; i++
) {
PoolServerBase thread =
(
PoolServerBase
)
clobj.newInstance
()
;
thread.next = head;
head = thread;
thread.start
()
;
}
}
catch
(
Exception e
) {
return false
;
}
return true
;
}
static synchronized protected
void
addToList
(
PoolServerBase me
) {
me.next = head;
head = me;
}
synchronized protected
void
waitForSignal
() {
try
{
wait
()
;
}
catch
(
InterruptedException e
) {
}
}
public
void
run
() {
while
(
true
) {
waitForSignal
()
;
doClientProcessing
()
;
addToList
(
this
)
;
}
}
synchronized protected
void
handleClient
(
Socket s
) {
socket = s;
notify
()
;
}
protected
void
doClientProcessing
() {
try
{
String s =
"Server."
;
s +=
"Thread: "
+
this
.toString
()
;
socket.getOutputStream
()
.write
(
s.getBytes
())
;
sleep
(
10000
)
;
// simulate processing
s =
"Complete"
;
socket.getOutputStream
()
.write
(
s.getBytes
())
;
socket.close
()
;
}
catch
(
Exception e
) {
System.out.println
(
e
)
;
}
}
static synchronized protected
boolean
listEmpty
() {
return
head ==
null
;
}
static protected
void
assignThread
(
Socket sock
) {
PoolServerBase t = head;
head = head.next;
t.socket = sock;
synchronized
(
t
) {
t.notify
()
;
}
}
static public
void
startServer
(
int
port
) {
ServerSocket ssock;
Socket sock;
try
{
ssock =
new
ServerSocket
(
port
)
;
while
(
true
) {
Socket esock =
null
;
try
{
esock = ssock.accept
()
;
while
(
listEmpty
())
yield
()
;
assignThread
(
esock
)
;
}
catch
(
Exception e
) {
try
{
esock.close
()
;
}
catch
(
Exception ec
) {
}
}
}
}
catch
(
IOException e
) {
}
}
static public
void
main
(
String args
[]) {
init
(
PoolServerBase.class,
3
)
;
System.out.println
(
"Starting server on port 808"
)
;
startServer
(
808
)
;
}
}
|
相关推荐
针对方法调用,基于字节码增强技术,运行时生成代理类,快速返回mock对象,后台异步进行调用通过管理和调度线程池,将后台异步调用进行加速处理,达到一个平衡点业务执行过程需要获取mock对象的真实数据时,阻塞等待...
项目中使用到的技术包含SpringBoot、SpringSecurity&oauth2(安全资源和授权中心模式、包括登录接口自定义返回字段、自定义手机号+密码登录、自定义免密登录)、Queue队列、线程池、xss攻击配置、SpringCache、Mybatis...
您可以调整发布间隔以及自定义模板danmaku池以进行顺序/随机生成。 没有我的最后一刻帮助,这个项目可能无法实现。 :D 该应用程序在单线程模式下的Python上运行,并在multuthread中运行Pythonista(一种iOS实现...
service/client stub由程序自动生成, 用户只要include相应的stub就可以接收/发起RPC. 使用 每个spec.json文件都对应了一个RpcService. 下面的spec定义了名为Arithmetic的RpcService, 加法和减法两个method. { ...
服务器可以将收集到的信息以柱状图和文件列表以及其他方式呈现给用户,以便用户对局域网内的主机进行监测和管理。 CClockST_demo 电子钟的实现,自绘Button、Static的实现,其中自定了一个辅助主题风格类。 ...
18、基于线程池实现sqlite3数据库的异步读写,提供与上文数据库相同的接口; 19、支持ARM架构; 20、方便的轻量级ORM实现,支持常规的对象到数据库的双向映射操作; 21、支持插件,可通过配置文件在加载期动态拆装;...
服务器可以将收集到的信息以柱状图和文件列表以及其他方式呈现给用户,以便用户对局域网内的主机进行监测和管理。 CClockST_demo 电子钟的实现,自绘Button、Static的实现,其中自定了一个辅助主题风格类。 ...
12反射 是java程序开发的特征之一,允许java程序对自身进行检查,并能直接操作程序的内部属性; instanceof操作符,instanceof.java; 获取类的信息,ViewClassInfoJrame.java; 动态调用类的方法,CallMetod.java; ...
服务器可以将收集到的信息以柱状图和文件列表以及其他方式呈现给用户,以便用户对局域网内的主机进行监测和管理。 CClockST_demo 电子钟的实现,自绘Button、Static的实现,其中自定了一个辅助主题风格类。 ...
服务器可以将收集到的信息以柱状图和文件列表以及其他方式呈现给用户,以便用户对局域网内的主机进行监测和管理。 CClockST_demo 电子钟的实现,自绘Button、Static的实现,其中自定了一个辅助主题风格类。 ...
服务器可以将收集到的信息以柱状图和文件列表以及其他方式呈现给用户,以便用户对局域网内的主机进行监测和管理。 CClockST_demo 电子钟的实现,自绘Button、Static的实现,其中自定了一个辅助主题风格类。 ...
服务器可以将收集到的信息以柱状图和文件列表以及其他方式呈现给用户,以便用户对局域网内的主机进行监测和管理。 CClockST_demo 电子钟的实现,自绘Button、Static的实现,其中自定了一个辅助主题风格类。 ...
易于使用,设置服务器,用户只需要知道 4-5 个 API 就可以拥有一个具有多个后端线程池架构的 IO 线程; 对于客户端用户,只需要 1 个 API。 高效,有线协议完全基于二进制,整数使用 Base128 编码,字符串编码为...
1. 目录 1. 2. 目录 .........................................................................................................................................................1 JVM ........................