Java 线程模拟

Posted

技术标签:

【中文标题】Java 线程模拟【英文标题】:Java Thread Impersonation 【发布时间】:2013-09-14 18:51:21 【问题描述】:

C++ 和 C# 等语言允许生成线程并为该线程设置用户主体。本质上,可以以不同于创建线程的用户的身份运行新线程。

Java 不支持这个。

我假设这样的事情可以使用 Java 使用 JNI 来完成?如果是这样,任何人都可以提供一个例子。

注意:Windows runas 或 PSTools psexec 等解决方案可以让您从 java 模拟进程,但不安全。我不是在寻找这些类型的解决方案。

【问题讨论】:

Impersonating a user from a Java Servlet的可能重复 【参考方案1】:

你将无法在纯 Java 中做到这一点。

通过 JNI 执行此操作将迫使您拥有特定于平台的代码,因此该解决方案将无法移植,并且将依赖特定平台机制来处理用户模拟。

此外,请记住,模拟适用于多个进程(而不是线程)。在 JVM 内部有多个线程,但只有一个进程(=> 一个用户)。要拥有其他用户,您必须生成另一个进程(=> 另一个 JVM)。而且 RPC 并不容易......

【讨论】:

以上是关于Java 线程模拟的主要内容,如果未能解决你的问题,请参考以下文章

Java多线程 模拟龟兔赛跑

Java中的线程池模拟

java线程池模拟并发

Java多线程模拟龟兔赛跑

模拟线程安全的售票案例(java)

java 多线程-sleep模拟网络延迟,倒计时