有人知道一种机制可以捕获正在运行的线程的状态并将其序列化以便进一步恢复吗?JVM有什么可用的吗?pthreads呢?我的主要目标是能够将正在运行的线程迁移到远程计算机。 解决方案如下: 通过该线程的协作,您可以通过线程支持的任何机制来完成此操作。没有该线程的配合,这是不可能的。如果该线程持有您的序列化代码所需的锁,将会发生什么? 如果迁移当前正在使用某些内核资源(例如管道)的正在运行的线程,会发生什么情况。您会迁移该资源吗? 解决问题的正确方法可能是让线程支持迁移机制。您如何执行此操作完全取决于该线程在做什么。如果…

2020年12月1日 0条评论 43点热度 阅读全文

我想实现一个通过其字符串值获取Enum对象的util。这是我的实现。 IStringEnum.java public interface IStringEnum { String getValue(); } StringEnumUtil.java public class StringEnumUtil { private volatile static Map<String, Map<String, Enum>> stringEnumMap = new HashMap<>(); …

2020年12月1日 0条评论 46点热度 阅读全文

我正在尝试使用context.getContentResolver().openInputStream(Uri)打开具有多个线程的多个文件,但似乎在读取时,所有线程都从同一文件读取。我试过使方法synchronized,但没有用。这是代码: private String getVideoData(Uri uri) { String res = null; MyActivity activity = ActivityTransferer.getInstance().getActivity(); try { Input…

2020年12月1日 0条评论 58点热度 阅读全文

我们有一个当前已线程化(约50个线程)的应用程序来处理事务。 我们已经建立了一个redis数据库,并使用DECRBY从用户帐户中扣除信用。 这是该过程的示例: 1. Get amount of credits for this transaction 2. Get current credit amount from from Redis: GET <key> 3. If amount of credits exceeds amount cost of transaction continue 4. D…

2020年11月30日 0条评论 39点热度 阅读全文

我的问题是,当它第二次尝试读取对象时,它引发了异常: java.io.StreamCorruptedException: invalid type code: AC at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1356) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351) at Client.run(BaseStaInstance.java:313)…

2020年11月30日 0条评论 55点热度 阅读全文

假设您的Java程序占用了100%的CPU。它有50个线程。您需要找到哪个线程有罪。我没有找到可以提供帮助的工具。当前,我使用以下非常耗时的例程: 运行jstack <pid>,其中pid是Java进程的进程ID。找到它的简单方法是运行JDK-jps中包含的另一个实用程序。最好将jstack的输出重定向到文件。 搜索“可运行”线程。跳过那些在套接字上等待的对象(由于某些原因,它们仍被标记为可运行)。 重复步骤1和2两次,看看是否可以找到模式。 或者,您可以在Eclipse中附加到Java进程,然后尝试一…

2020年11月27日 0条评论 58点热度 阅读全文

我正在尝试使用多线程模拟一个简单的恒温器。温控器应提高温度,以达到用户要求的以下代码中的“最大”值。我有两个线程,一个负责提高温度,另一个负责降低温度。但是减少的条件是它应该仅在气体关闭时才运行。但是我对实现这个概念有疑问。每次按下“向上”按钮以提高所需的温度时,GUI都会冻结。我怎么解决这个问题? 就像一个线程正在持有该锁并且不会释放它,但是我如何才能注意到哪个? `private volatile boolean isBoilerOn = false; protected int Max, Current; p…

2020年11月27日 0条评论 46点热度 阅读全文

我有一个ArrayList,我想用来容纳RaceCar对象,这些对象在执行完后立即扩展Thread类。一个名为Race的类使用RaceCar对象完成执行后调用的回调方法来处理此ArrayList。回调方法addFinisher(RaceCar finisher)将RaceCar对象添加到ArrayList中。这应该给出线程完成执行的顺序。 我知道ArrayList不同步,因此不是线程安全的。我尝试使用Collections.synchronizedCollection(c Collection)方法,方法是传入新的…

2020年11月26日 0条评论 62点热度 阅读全文

我有一个ArrayBlocking队列,在该队列上可以使用单线程固定速率Scheduled。我可能没有完成任务。我想重新运行该文件或将其重新插入高优先级或顶层的队列中 解决方案如下: 这里的一些想法-为什么使用ArrayBlockingQueue而不使用PriorityBlockingQueue?听起来像你对我的需要。首先,将所有元素设置为同等优先级。万一您收到异常-请以更高的优先级重新插入队列

2020年11月26日 0条评论 58点热度 阅读全文

我的一个应用程序在负载下运行了一段时间后挂起,有人知道是什么会导致jstack中的此类输出: "scheduler-5" prio=10 tid=0x00007f49481d0000 nid=0x2061 waiting on condition [0x00007f494e8d0000] java.lang.Thread.State: WAITING (parking) at sun.misc.Unsafe.park(Native Method) - parking to wait for <0x000000…

2020年11月25日 0条评论 57点热度 阅读全文