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