Вы можете добавить поле потока к событию
public class MyEvent extends Event [
@Label("Start Thread")
@TranistionFrom
private final Thread startThread;
MyEvent(Thread thread) {
this.startThread = thread;
}
]
Когда вы фиксируете событие, конечный поток будет сохранен.
Если вы хотите отслеживать событие в нескольких потоках, вам нужно создать событие для каждого потока и иметь идентификатор, чтобы вы могли понять поток.
class MyEvent extends Event {
@Label("Transition id");
long id;
}
Если вам нравится, вы можете создать реляционный идентификатор для описания отношения, и JMC должен уметь подсказывать (в контекстных меню и т. Д.), Что существует связь между событиями.
@Label("Transition Id")
@Relational
@Target({ ElementType.FIELD })
@Retention(RetentionPolicy.RUNTIME)
@interface TransitionId {
}
Если вы не хотите повторяться, вы можете написать вышеуказанную функциональность в методе базового класса, который вы можете вызывать для каждого нового потока, который посещает событие.
abstract AbstractTransition extends Event {
@TransitionId
@Label("Transition Id")
private long id;
public void setTransitionId(long id) {
this.id = id;
}
}
Нет другого способа сделать это.
Невозможно, чтобы JVM знала, в каком потоке находится объект события или какие потоки должны быть записаны. Пользователь должен предоставить по крайней мере один вызов метода для каждого потока, который должен быть затронут (вместе с некоторым контекстом).