我可以将main()方法声明为synchronized,以避免.jar文件(仅由main()组成)同时执行两次吗?

And*_*ili 3 java multithreading java-threads

我有以下关于声明方法同步的dount .

所以阅读这个讨论: 声明主方法同步

我可以读到:

同步可防止多个实例同时执行,这可能是合乎需要的.

那究竟是什么意思呢?

我试着做一个例子:

我有一个非常小的批处理应用程序,可以在数据库上执行一些操作.该应用程序主要由main()方法组成.我编译了一个可以执行的.jar文件.

这意味着将此main()方法声明为同步我不能同时运行此jar文件的2个实例?或者我错过了什么?

Mar*_*eel 8

不,那是不可能的.同步仅在同一程序执行中有效.如果你启动一个jar两次,它会启动两个不同的程序执行,每个程序都有自己的地址空间,它们不共享任何对象或内存.

如果要防止同一程序的多次执行,则需要具有外部锁定功能,例如锁定文件.