Okay, I got more info from this post
My final code looks like this. Notice that the start function has to have a second parameter, even if you don't want to give any arguments
ScriptManager sm = Client.getInstance().getScriptManager();
ExecutorService executor = Executors.newSingleThreadExecutor();
executor.submit(() -> {
try{
TimeUnit.SECONDS.sleep(3);
sm.start("Cow Tanner", "");
} catch(Exception e) { }
});
this.stop();
Hope this helps someone!