让java程序在没有线程的情况下hibernate
我有一个java程序进行一些计算,然后将结果上传到MYSQL数据库(托管在同一网络中的另一台计算机)。 我有时会面临程序执行计算的速度快于上传结果的问题。 因此无法上传所有结果。 该程序目前没有线程。
有没有办法让程序在完成计算后睡眠几毫秒,以便正确上传。 (就像在其他语言中睡觉或等待function)
我可以编程程序,但这将是太多的重写。 有更容易的方法吗?
谢谢
有没有办法让程序在完成计算后睡眠几毫秒,以便正确上传。 (就像在其他语言中睡觉或等待function)
Thread.sleep(milliseconds)
是一个公共静态方法,也可以用于单线程程序。 以下是典型的模式:
try { // to sleep 10 seconds Thread.sleep(10000); } catch (InterruptedException e) { // recommended because catching InterruptedException clears interrupt flag Thread.currentThread().interrupt(); // you probably want to quit if the thread is interrupted return; }
无需使用线程调用实现Runnable
或执行任何其他操作。 你可以随时调用它来暂停某些代码。
您不必重新线程或任何此类事情。 你需要做的就是打电话:
Thread.Sleep(5000); // pause the app for 5 seconds
每个应用程序也是一个线程,在您的情况下也称为单线程应用程序。 您可以使用类似Sleep的线程API,无需任何其他代码或重构。
但需要注意的是:如果你需要使用Thread.Sleep来管理你的控制流程,那么在架构上可能会出现问题。 从您的OP我关注的不是您所描述的单线程应用程序,您似乎有一个操作“超出”另一个。 除非您从其他地方收到异步事件,否则这是不可能的。
另一个警告:睡眠需要一毫秒参数,通常是任意的,只是意味着“等一会儿”。 问题是,“一会儿”可能今天没问题,但明天你的机器将承受更大的负荷并且“一会儿”将不再足够好,你的睡眠将会失效并且会出现相同的错误。 当然,你可以将时间设置为“很长一段时间”但是你会等待“很长一段时间”进行每次交易……赶上22。
使用Thread.sleep()
:
try { Thread.sleep(1000); // Sleep for one second } catch (InterruptedException e) { Thread.currentThread().interrupt(); }
这不会在程序中引入新的Thread
或需要任何其他Thread
相关的机器。
只需使用: –
try { Thread.sleep(
这将使当前线程(例如主线程)hibernate。
java.lang.Thread
类中的静态方法sleep()
在调用时暂停当前线程 – 它可能只是主线程。 您不需要做任何特殊的事情来使用它。
每个Java应用程序都在JVM中的一个线程中执行。 调用静态方法Thread.sleep将导致应用程序的线程(正在运行的线程)停止
你的程序不是多线程的……但它使用的是一个线程。 Thread.Sleep仍然有效。
你可以使用Thread.sleep();
计算完成后无需用线程重写整个程序!