How to use Java as NT SERVICE
service = new
Service();
thread=new
Thread(service);
try
{
thread.setDaemon(false
);
if
(!thread.isDaemon())
{
System.out.println("成功设定线程为用户线程!"
);
}
thread.start();
}
里面的Service由自己实现,注意: thread.setDaemon(false
);把线程设置为用户线程,以避免thread.start()结束后线程结束
随后的工作就是利用
JavaService
注册
NT
服务,
JavaService
是一个开源项目,其项目地址为
http://javaservice.objectweb.org
相关文档:
1, 为什么wait与notify之前必须要加synchronized?
答案其实很简单,也是为了防止等待-通知机制出现race condition
为什么会出现race condition ?
答: 对象在被wait之前已经被另一线程notify , 之后的wait 会永久停止,并导致deadlock(死锁)
理想情况:
1, 第一个线程判断该对象是否要wait
2, 第一个线程将对象wait
3 ......
<%
//header.jsp
out.println("Protocol: " + request.getProtocol() + "<br>");
out.println("Scheme: " + request.getScheme() + "<br>");
out.println("Server Name: " + request.getServerName() + "<br>" );
out.println(&quo ......
Apache MINA (mina-2.0.0-M6源码为例):
我们使用mina nio tcp最常用的样例如下:
NioSocketAcceptor acceptor = new NioSocketAcceptor(/*NioProcessorPool's size*/);
DefaultIoFilterChainBuilder cha ......
String转Character数组,用Character的isDigit和isLetter函数去判断。
public static boolean isNumeric(String str) {
for (int i = str.length(); i = 0;) {
if (!Character.isDigit(str.charAt(i))) {
return false;
}
}
return true;
}
public static boolean isNumeric(String str) {
Pattern patt ......