2017-11-29 19 views
-1

클래스 CameraMessageFrameWorker에서 일부 메시지를 처리 ​​할 새 스레드를 만들고 싶습니다. 이 클래스의 컨스트럭터는 PartialMessageFrame입니다. 이 PartialMessageFrame을 새로운 private 변수 messageFrame에 복사합니다. 이 변수를 사용하여 새 스레드를 만들고 싶지만이 변수가 null이므로 java.lang.IndexOutOfBoundsException을 얻고 싶습니다.매개 변수가있는 새 스레드를 만듭니다.

컨스트럭터의 messageFrame 변수가 호출하는 함수의 데이터를 가져 왔는지 확인했습니다.

이 스레드에 매개 변수를 넣을 수 있습니까? 이 코드에서 잘못된 점은 무엇입니까?

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; 
     } 
    } 
    } 

인터페이스 : MessageFramewoker.java

public interface MessageFrameWorker extends Runnable { 
} 

오류 메시지 :

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) 
+0

포스트에서 관련 코드 및 오류 메시지 세부 사항을 깊은 복사본을 만들려면 여기를 참조하십시오. – Oleg

답변