基于 Java 2 运行时安全模型的线程协作
2009-09-20 00:00:00 来源:WEB开发网在该模型中,有一个特殊的保护域,系统域(System Domain)。所有被 null类装载器所装载的类都被称为系统代码,其自动拥有所有的权限。而且,所有的重要的受保护的外部资源,如文件系统、网络、屏幕、键盘等只能通过系统代码获得。
图 3. doPrivileged Stack Frame
接下来,本文会给出一个简单的示例,然后我们根据这个示例,进一步深入,来创建一个线程间安全协作的应用。
示例
我们的示例很简单:客户端调用 LogService 提供的 API,把 Message 写入到磁盘文件。
清单 1. 客户端程序
package sample.permtest.client;
……
public class Client {
……
public static void main(String[] args) {
//构造消息日志,使用LogService将其写入c:\\paper\\client\\out.tmp文件。
Message message = new Message("c:\\paper\\client\\out.tmp",
"Hi, this is called from client"+'\n');
LogService.instance.log(message);
//构造消息日志,使用LogService将其写入c:\\paper\\server\\out.tmp文件。
message = new Message("c:\\paper\\server\\out.tmp",
"Hi, this is called from client"+'\n');
LogService.instance.log(message);
}
}
更多精彩
赞助商链接