Quand le Système.currentTimeMillis() de débordement?
J'ai une application web qui ordonne les choses à l'aide d'un marqueur temporel, qui n'est qu'un long. Mon application web backend arrive à être écrit en java, donc je suis en utilisant:
long timestamp = System.currentTimeMillis();
quelle année (environ) sera-ce un échec? Je veux dire, à un certain point, la plage de long va déborder, à droite? Nous pouvons tous être morts depuis longtemps, mais je suis juste curieux. Il va ressembler y2k une fois de plus? Que puis-je faire pour me préparer à cela? Ridicule, je sais, juste curieux!
Grâce
Vous devez vous connecter pour publier un commentaire.
Elle déborde à
qui imprime
C'est donc après un peu plus de 292 millions d'années. Je dirais, il y a un beaucoup de temps d'inventer une solution dans l'intervalle. Pour être honnête, je ne m'attends pas le humanhood pour survivre à ça. Nous existons seulement quelques secondes par rapport à la l'âge du monde à l'heure de l'échelle et il ne prendra pas longtemps.
Essayez d'exécuter ce code:
Qui imprime quelque chose comme ceci en fonction de vos paramètres régionaux:
Très longtemps dans l'avenir, donc pas besoin de s'inquiéter à propos de débordement.
Il semble peu probable que votre application web sera toujours autour de sur Sun Aug 17 17:12:55 est 292278994
(tel que calculé par les autres). Il semble encore plus probable que vous serez toujours responsable de l'application web alors. (Si vous êtes toujours responsable de, vous aurez probablement être payé à un taux plus élevé dans l'avenir, alors, faites-la glisser pour l'instant, et de collecter les big bucks plus tard:)
Il est beaucoup, beaucoup plus probable que le système de l'horloge est réglée correctement à certaines farfelues valeur. Vous pouvez vous préparer pour cette relativement facilement - pseudo-code ci-dessous
Si vous êtes encore vivant lors de l'un de ces affirmations est déclenchée, vous pouvez probablement facturer vos clients de gagner beaucoup d'argent, soit pour la fixation de l'horloge système ou la modification de l'assertion (selon le cas).
Bien, vous pourriez avoir votre cercueil équipé avec la dernière et la plus grande C'gear /geek jouets. Mais de toute façon je pense qu'ils vont être un peu "dépassé" dans 292,278,994 AD. Et vous serez très ennuyé avec eux alors.
Rappelez-vous, vous aurez suffisamment de temps pour réécrire le système d'exploitation à partir de zéro pour utiliser un cryptage de 128 bits horloge. Qui sonne comme un projet amusant pour passer le temps. 🙂
La valeur maximale de Java
long
est2^63 - 1
, et si vous convertissez que le nombre de millisecondes dans la pratique des unités de temps, vous trouvez que le compteur de dépassement à environ 290 millions d'années. Alors ne vous inquiétez pas à ce sujet 😉 Si quelqu'un est toujours là pour exécuter les ordinateurs, je suis sûr qu'ils seront passés à 128 bits compteurs de temps d'ici là (ou repris une nouvelle époque).L'erreur dans ces réponses, c'est en supposant que le système que vous utilisez est en 64 bits et renvoie une version 64 bits de la représentation de millis depuis 1970. Linux utilise un 32 bits de la représentation et de dépassement est en 2038.
Voir L'année 2038 problème de référence