java - 在 Java 中将函数序列化为数据?

标签 java multithreading serialization

我在 Java 中有一个与线程大致相似的抽象类,还有一个将我的“线程”调度到实际的 java 线程。我想要做的是创建从我的“线程”类继承的类,重写 run() 函数,然后使它们可序列化并通过网络发送它们,以便它们可以在其他地方运行。

明显的问题是接收者不会知道发送的实际类,甚至将该类转换为其父类(super class)也无济于事。

我想知道的是,有没有办法序列化匿名字节码以通过网络发送?如果是这样,怎么办?非常感谢示例。

最佳答案

java序列化序列化对象,即类的实例。当您序列化对象时,您实际上以某种方式存储它的成员字段的值。方法的逻辑超出了序列化的范围 - 它存储在类文件中。 您真正想要做的是通过网络发送类文件和类的实例。

好消息是您可以做到这一点。使用 ClassLoader.getResoureAsStream() 查找适当的 class 文件,将其作为字节序列发送到另一端。对方显然应该能够接收到然后调用

ClassLoader.defineClass(String name, byte[] b, int off, int len)

从此刻起,发送方应用程序已知的类将在接收方的 JVM 中可用。现在您可以使用常规序列化机制来发送此类的实例,一切都应该正常。

关于java - 在 Java 中将函数序列化为数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9238329/

相关文章:

java - 需要固定我的 Java 代码

Java并发,什么情况下CompletableFuture.supplyAsync()会返回null

java - 线程是如何并发创建的

android - 序列化/反序列化 & Proguard

javascript - 有没有一种方法可以指定在序列化时将对象的哪些数据传递给序列化程序?

serialization - boost::serialization - 转换为字符串

java - JVM 是否有最坏的情况实现?

java - 使用 LWJGL 创建相机类

java - 在 jmockit 中模拟被测类的私有(private)方法

multithreading - 类成员是否没有缓存行问题?