public class Main {
private static int period = 60; //Default period
private static final TimeUnit PERIOD_TIME_UNIT = TimeUnit.MINUTES;
public static void main(String[] args) {
ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(1);
System.out.println(String.format("Worker work period %d %s", period, PERIOD_TIME_UNIT));
scheduledExecutorService.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
//код который должен запускатся по таймеру
}
}, 0, period, TimeUnit.MINUTES);
}
}
ThreadPoolExecutor
собственно для этого у меня есть само писанный наподобие андроидовского AsyncTask класс с callback'ами onPostExecute
onPreExecute
doInBackground
, которому отдаёшь Runnable
он их выполняет. @Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(unique = true, nullable = false)
private String userName
@OneToMany(fetch = FetchType.LAZY, mappedBy = "user")
private Set<Todo> todos = new HashSet<Todo>();
}
@Entity
public class Todo {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@ManyToOne()
@JoinColumn(name = "user_id")
private User user;
}
public enum MessageType {
NOTNULL("not null!!!"), MINVALUE("min value must be ...");
private final String message;
private MessageType(final String message) {
this.message = message;
}
public String getMessage() {
return message;
}
@Override
public String toString() {
return this.message;
}
}
@NotNull(message = MessageType.NOTNULL.getMessage())
private String userName;
MessageType.NOTNULL.name()
метод который возвращает имя Enum'a не пройдёт.public class ValidationConstants {
private ValidationConstants() {} //Приватный конструктор, что бы нельзя было сделать new
public static final String NOT_NULL = "Not nuull...";
public static final String MIN_VALUE = "Min value must be...";
}
@NotNull(message = ValidationConstants.NOT_NULL)
HttpSession session = request.getSession();
session.setAttribute("key", "value"); // положить в сессию что то
session.getAttribute(key);
request.getSession();
Создаст сессию если таковой нет или вернёт уже существующую.request.getSession(true);
Вернёт существующую сессию или null если таковой нет.session.setMaxInactiveInterval(30*60);
можно задать сколько сессия будет жить в данном случае 30мин.JSESSIONID
где хранится id сессииsession.getId();
session.invalidate();
HttpSession
public static final EventExecutorGroup group = new DefaultEventExecutorGroup(16);
pipeline.addLast(group, "handler", new MyBusinessLogicHandler());
message.setHeader("Content-Type", "text/plain; charset=utf-8");
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World");
}
}
javac HelloWorld.java
java HelloWorld
shutdown()
который после вызова закончит «таски», которые вы ему дали на выполнение, но новые принимать больше не будет.Callable<T>
если хотите возвращать значение или Runnable
buttonStyleSmall
стиль, наверно там что-то, потому как в том что вы превели, вроде ничего такого нету.