Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 线程逻辑的正确执行_Java_Python_Multithreading_Python Multithreading - Fatal编程技术网

Java 线程逻辑的正确执行

Java 线程逻辑的正确执行,java,python,multithreading,python-multithreading,Java,Python,Multithreading,Python Multithreading,我试图在Python的模拟器中,在这个设置断点的java代码中重新创建线程逻辑 void runToBreakpoint(){ /****************************************************************************************** *如果我们加载了一个可运行的程序,我们将运行指令,直到遇到错误* *断点或程序终止。棘手的部分是捕获条件* *我们刚刚从以前的断点条件恢复* *一个布尔变量“resume”,用于切换到之后

我试图在Python的模拟器中,在这个设置断点的java代码中重新创建线程逻辑

void runToBreakpoint(){
/******************************************************************************************
*如果我们加载了一个可运行的程序,我们将运行指令,直到遇到错误*
*断点或程序终止。棘手的部分是捕获条件*
*我们刚刚从以前的断点条件恢复*
*一个布尔变量“resume”,用于切换到之后执行的第一条指令*
*上一个断点暂停*
******************************************************************************************/
Runnable runIt=new Runnable(){//创建要在其中运行的线程。
int lastStatementRun;//为
Boolean isBreakpoint;//我们将运行的指令。
绷带;
公开募捐{
machineState=MARIE_跑步;
而((machineState==MARIE_RUNNING)和(!fatalError)){
runStop.setEnabled(true);
aString=regPC.toString().trim();//移动光标。
if(代码参考.容器(aString)){
lastStatementRun=((整数)codeReference.get(aString)).intValue();
}
fetchNext();
尝试{//给用户一个中止的机会,并
Thread.sleep(delay);//有机会看到发生了什么。
}
捕捉(中断异常e){
}
如果(!fatalError){
执行();
}
isBreakpoint=(布尔)programArray[lastStatementRun][0];
如果((machineState==MARIE_RUNNING)
&&(isBreakpoint.booleanValue()){//检查断点。
machineState=MARIE_暂停;//如果我们找到一个,暂停。
setStatusMessage(“因断点而停止”);
}
重新油漆();
}//而
}//运行()
};//运行它
如果((machineState==MARIE_未初始化)||
(machineState==MARIE_无程序加载))
返回;
如果((machineState==MARIE_正常)||
(machineState==MARIE__)
重启();
fatalError=false;
validate();//重置致命错误。
断点=真;
Thread runThread=new Thread(runIt);//在线程中运行这个。
runThread.start();//启动它。
if(fatalError)//错误时停止。
停止();
}//runToBreakpoint()
我对Python多线程非常陌生,并且尝试过重新创建这个示例,我想知道我的线程逻辑是否与Java示例中创建线程运行并在函数末尾启动线程的逻辑一样正确

def startBreakPoint():
    lastStatementRun = 0
    isBreakpoint = None
    aString = None
    machine_state = Running
    while machine_state == Running and not machine_error:
        # enable stop button as true
        aString = str(PC).strip()
        if aString in dictReference:
            lastStatementRun = int(dictReference.get(aString))
        fetchNextInstruction()
        try:
            time.sleep(5)
        except InterruptedError:
            print("Interrupted")
        if not machine_error:
            execute()
        isBreakpoint = bool(programArray[lastStatementRun][0])
        if machine_state == Running and isBreakpoint:
            machine_state = Paused
            print("Stopped for breakpoint")
    if machine_state == Uninitialized or machine_state == No_Program:
        return
    if machine_state == Normal_Halt or Abnormal_Halt:
        restart()
    machine_error = False
    # validate()
    breakpointOn = True
    x = threading.Thread(target=startBreakPoint(), args=(2,))
    x.start()

programArray[lastStatementRun][0]
是否总是布尔值?如果不是,您将得到一个强制转换异常。