Пишу проект на java с использованием spring, на главной странице запускаю скрипт, который написан на Python. Встает вопрос как сделать так чтобы запускать этот скрипт 1 раз, чтобы нельзя было повторного его запустить с другого компа?
пока наброски делаю класс-поток: (ThreadsClass.java)
package com.blrmyfc.ComputerVision;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
public class ThreadsClass extends Thread {
private Process process = null;
public void starting(String command, String script){
ProcessBuilder processBuilder = new ProcessBuilder(command, script);
processBuilder.redirectErrorStream(true);
try {
process = processBuilder.start();
} catch (IOException e) {
e.printStackTrace();
}
InputStream stdout = process.getInputStream();
InputStreamReader isrStdout = new InputStreamReader(stdout);
BufferedReader brStdout = new BufferedReader(isrStdout);
String line = null;
while (true){
try {
if (!((line = brStdout.readLine()) != null)) break;
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(line);
}
int exitVal = 0;
try {
exitVal = process.waitFor();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("выход = "+exitVal);
}
public void exit(){
process.destroyForcibly();
}
public void run(){
String command = "python3";
String script = "core/blr_recognizer/production.py";
starting(command, script);
}
}
Класс-контроллер (MethodsController.java)
private ThreadsClass threadsClass;
public ThreadsClass getThreadsClass(){
return threadsClass;
}
public void setThreadsClass(ThreadsClass threadsClass){
this.threadsClass = threadsClass;
}
@PostMapping("/starting")
public String starting() {
ThreadsClass mainThread = new ThreadsClass();
setThreadsClass(mainThread);
System.out.println(getThreadsClass().getState());
getThreadsClass().start();
return "true";
}
@PostMapping("/interrupt")
public String interruptScript(){
getThreadsClass().exit();
getThreadsClass().interrupt();
return "true";
}
}
сейчаc я могу зайти с обычного режима и с инкогнито, и запустить его. Надо как-то синхронизировать потоки?