Un programme Java peut-il détecter le moment où le système d'exploitation est sur le point de s'endormir ou, à défaut, détecter au moins un réveil?Détecter les événements Sleep et Wake Up du système d'exploitation en Java
Le problème réel est que dans une application particulière, un certain nombre d'opérations de base de données MySQL sont exécutées en arrière-plan. Lors d'un test sur une machine Windows, ces transactions de base de données sont interrompues après un cycle de veille/de réveil provoquant une tonne de conditions d'erreur dans le programme. Ces erreurs recherchent généralement quelque chose comme ceci:
java.net.SocketException MESSAGE: Software caused connection abort: recv failed
Si nous pouvions réagir à un événement « dormira bientôt », nous pourrions essayer de faire une pause des opérations d'arrière-plan le problème préemption. Moins idéalement, si nous pouvions réagir à un événement «juste réveillé», nous pourrions au moins supprimer les messages d'erreur.
Dommage qu'il ne puisse pas être fait sans JNI mais le lien semble être un bon début. –
Oui, JNI peut être une douleur à développer et déboguer. Nous avons trouvé que la clé est de conserver autant de logique que possible en Java, et d'utiliser simplement JNI comme un pont pour faire des appels de bas niveau à l'API C. – rob