易截截图软件、单文件、免安装、纯绿色、仅160KB

JAVA and C++版信号量(PV操作)

import java.util.concurrent.Semaphore;
/**
* 抽象任务,具体的执行任务,归实现类负责
*
* @author Administrator
*
*/
public abstract class Task {
public abstract void run();
private Semaphore s;
private boolean hasExisted = false;
public void P(final Semaphore s) throws InterruptedException {
if (s == null) { // 申请空的信号量
throw new InterruptedException("不能为空");
}
if (hasExisted) {// 已经申请了一个资源,还没有释放
throw new InterruptedException("已经占用一个资源");
}
s.acquire();// 阻塞
this.s = s;
hasExisted = true;
}
public boolean V() {
if (!hasExisted) {
return false;// 没沾有资源就不能说释放了
}
s.release();//释放资源
hasExisted = false;
s = null;
return true;
}
}
import java.util.concurrent.Semaphore;
/**
* 用信号量实现互斥
*
* @author Administrator
*
*/
public class Mutex extends Semaphore {
private static final long serialVersionUID = 1L;
public Mutex() {
super(1);//互斥是1
}
} import java.util.concurrent.Semaphore;
public class Test {
public static void main(String[] args) {
// final Semaphore s = new Semaphore(2);//信号量,执行结果run the task1 run the
// task2 run the task3
final Semaphore s = new Mutex();// 互斥 run the task1 run the task2 run
// the task3
new Thread() {
public void run() {
Task1 task2 = new Task1();
try {
task2.P(s);// 申请资源
task2.run();// 执行任务
task2.V();// 释放资源
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}.start();
new Thread() {
public void run() {
Task2 task2 = new Task2();
try {
task2.P(s);
task2.run();
task2.V();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}.start();
new Thread() {
public void run() {
Task3 task2 = new Task3();
try {
task2.P(s);
task2.run();
task2.V();
} catch (InterruptedException e)


相关文档:

java 相关的书 Rubicon

《Java how to program》
《Core java 2》
《Thinking in java》
《程序设计实践》
《代码大全》
《设计模式》
《java 网络编程》
serverlet jsp javabean spring habernate mysql等。 ......

Java EE 6增强的可扩展性:Web分片和可插拔框架


   Java EE 6中最引人注目的改进要算Web层的展示了,正如前面提到的Java EE 6的一个重要目标就是提高可扩展性,在可扩展性方面两个关键改进分别是Web分片和可插拔性共享框架,这两个新特性是通过Java EE 6中的Servlet 3.0技术提供的。Servlet 3.0,JSR 315规范是Servlet技术的最新版本,它提供了诸如支持异步处 ......

java加密和数字签名3 公钥加密

最近初步接触了下Java加密和数字签名的相关内容,我学习的过程大概分五步:
1)消息摘要
2)私钥加密
3)公钥加密
4)数字签名
5)数字证书
下面的代码是第三部分:公钥加密
希望能为刚刚接触这个的朋友们省点事
package security;
import java.security.KeyPair;
import java.security.KeyPairGenerator ......

java加密和数字签名4 数字签名

最近初步接触了下Java加密和数字签名的相关内容,我学习的过程大概分五步:
1)消息摘要
2)私钥加密
3)公钥加密
4)数字签名
5)数字证书
下面的代码是第四部分:数字签名
希望能为刚刚接触这个的朋友们省点事 package security;
import java.security.Signature;
import java.security.KeyPairGenerator ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号