In the class CameraMessageFrameWorker
i want to create a new Thread to handle some messages. The consructor of these class get the PartialMessageFrame
. I copy these PartialMessageFrame
to the new private
Variable messageFrame
. With this variable i want to create the new Thread but when i want to do this i get an java.lang.IndexOutOfBoundsException
because this variable is null
.
I have checked if the messageFrame
variable in the contructor get the data for the calling function.
How can i put some parameters into this thread? What is wrong on this code?
CameraMessageFrameWorker.java
public class CameraMessageFrameWorker implements MessageFrameWorker {
private static final Logger LOGGER = LoggerFactory.getLogger(CameraMessageFrameWorker.class);
private final PartialMessageFrame messageFrame;
private final SerialPort serialPort;
public CameraMessageFrameWorker(
final PartialMessageFrame p,
final SerialPort serialPort) {
messageFrame = p;
this.serialPort = serialPort;
}
@Override
public void run() {
switch (messageFrame.getMessageType()) {
case FCT: {
handleFunction();
break;
}
case REQ: {
handleRequest();
break;
}
default: {
LOGGER.warn("unhandled message type");
break;
}
}
}
Interface: MessageFramewoker.java
public interface MessageFrameWorker extends Runnable {
}
Error message:
Exception in thread "pool-1-thread-1" java.lang.IndexOutOfBoundsException: Index: 9, Size: 0
at java.util.ArrayList.rangeCheck(ArrayList.java:653)
at java.util.ArrayList.get(ArrayList.java:429)
at com.scape.cx.service.draeger.polaris.simulator.PartialMessageFrame.getMessageTypeAsInt(PartialMessageFrame.java:56)
at com.scape.cx.service.draeger.polaris.simulator.PartialMessageFrame.getMessageType(PartialMessageFrame.java:80)
at com.scape.cx.service.draeger.polaris.simulator.CameraMessageFrameWorker.run(CameraMessageFrameWorker.java:39)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)