Наиболее важными частями контекста являются адресное пространство (или виртуальная память) и состояние процессора (например, значение регистра, счетчик программ и т. Д.). С этой точки зрения, должны существовать другие два вида контекстов: контекст ядра и контекст потока ядра.
Само ядро работает в пространстве ядра и не зависит от задач (включая обычный процесс и потоки ядра). Его контекст называется пустым контекстом или контекстом обмена.
Потоки ядра также не полагаются ни на какой нормальный контекст процесса. Они запланированы как обычная задача, с другим состоянием процессора, но в одном и том же адресном пространстве. На самом деле все задачи имеют одну и ту же часть пространства ядра, которая совпадает с частью ядра незанятого контекста. Вот почему нет необходимости изменять адресное пространство (или мм) при переключении обычного процесса на поток ядра или между потоками ядра.
Фактически, контекст прерывания в точности совпадает с контекстом ядра и контекстом потоков ядра: они не зависят ни от какого нормального контекста процесса. Прерывание полностью асинхронно, поэтому в его контексте нет предположения о контексте прерванной задачи. Я думаю, именно поэтому Роберт Лав говорит, что есть только два вида контекстов: контекст процесса и другой.
Я беру метод решения "в лоб"
// make it now
Calendar dateCal = Calendar.getInstance();
// make it tomorrow
dateCal.add(Calendar.DAY_OF_YEAR, 1);
// Now set it to the time you want
dateCal.set(Calendar.HOUR_OF_DAY, hours);
dateCal.set(Calendar.MINUTE, minutes);
dateCal.set(Calendar.SECOND, seconds);
dateCal.set(Calendar.MILLISECOND, 0);
return dateCal.getTime();
Мне любопытно услышать то, что другие люди должны сказать об этом. Мой собственный опыт состоит в том что, срезая путь (т.е. "лучше или более умные идеи") с Date
s почти всегда ставит Вас в неприятное положение. Heck, просто с помощью java.util.Date
напрашивается на неприятности.
Добавленный: Многие рекомендовали Время Joda в других Связанных с датой потоках.
Я рассмотрел бы использование предопределенного API умный способ сделать это.
Не уверенный, почему Вы только не использовали бы Календарный объект? Это легко и удобно в сопровождении. Я соглашаюсь о не использовании Даты, в значительной степени все полезное об этом теперь удерживается от использования.:(