// // 多线程并发调用... procedure TForm1.Button3Click(Sender: TObject); var i: integer; begin for i := 1 to 10 do with TCallThread.Create(false) do closehandle(handle); end;
Constructor TCallThread.Create(SuspendedOnCreate: boolean); begin Inherited Create(SuspendedOnCreate); FreeOnTerminate:=true; end;
procedure TCallThread.ShowResult; begin Form1.memo1.Lines.Add(ResultStr); end;
procedure TCallThread.Execute; var Java: TRemoteJava; OutputData: ansistring; i: integer; begin Java:=TRemoteJava.Create(nil); Java.UserConnection:=form1.UserConn; Java.TargetNodeId:=form1.UserConn.UserNodeId; for i := 1 to 1000 do begin if Java.CallJarMethod('cn/com/tcsl/RSA','DeCode','HIUFJWOEIFJ中文',OutputData) then ResultStr:='线程'+inttostr(self.ThreadID)+',第'+inttostr(i)+'次调用远程Jar成功,结果='+string(OutputData) else ResultStr:='线程'+inttostr(self.ThreadID)+',第'+inttostr(i)+'次调用远程Jar失败,Error='+Java.LastError; Synchronize(ShowResult); end; FreeAndNil(Java); end; .