Salut,
J'aimerai bien savoir si je pourrai initialiser une durée (temps) en java, genre une variable qui contient 2 minutes.
Merci.
Salut,
J'aimerai bien savoir si je pourrai initialiser une durée (temps) en java, genre une variable qui contient 2 minutes.
Merci.
Souvent, on marche avec des int, tout simplement ...
Tu veux initialisé deux minutes, tu initialise int duree = 120
Après, il existe peut-être des classes spécialisée, mais pour des utilisation simple comme ça, les objets int suffisent ...
Merci pour la réponse,
Je veux faire un 'while' sur 2 minutes par exemple, je sais pas comment décrémenter le temps pour sortir de la boucle![]()
while d'accord, mais par pas de combien, pour en faire quoi, quel est le but?
Ok,
Je fait un ReminTask qui repete un processus pour un laps de temps donné. et dans le run du ReminTask, je devrai faire ce while pour faire des instructions et sortir si le laps de tmp est depassé!
voice le code:
le while lapsDeTemp n'est pas fini est ma condition, et lapsDeTemp c'est le paramètre de bouclage du RemindTask.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98 public class SemaphoreTest { // static Date now = new Date(); static int lapsDeTemp = 5 * 1000; // private static final Log log = LogFactory.getLog(SemaphoreTest.class); public static int numEquipment = 50; static List<Integer> workers = new LinkedList<Integer>(); static List<Integer> processedWorkers = new LinkedList<Integer>(); static List<Integer> workersToDo = new LinkedList<Integer>(); public static void initWorkers() { for (int w = 0; w < numEquipment; w++) { workers.add(w); } workersToDo.addAll(workers); } static class RemindTask extends TimerTask { int j = 0; public RemindTask() { super(); initWorkers(); } // init endDate (schedule) public static Date endDate; public static Date startDate; DateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss"); { try { startDate = dateFormat.parse("05/26/2011 13:13:12"); endDate = dateFormat.parse("05/29/2011 12:55:12"); } catch (ParseException e) { e.printStackTrace(); } } @Override public void run() { if (endDate.after(new Date())) { log("Iteration " + j); log("Workers to process during this iteration: " + workersToDo); processedWorkers.clear(); List<Integer> workersToDoCopy = new LinkedList<Integer>( workersToDo); Iterator<Integer> workerIterator = workersToDoCopy.iterator(); While(lapsDeTemp "n'est pas fini"){ Integer currentWorker = workerIterator.next(); Processor processor = new Processor("THREAD-" + currentWorker); new Thread(processor).start(); workersToDo.remove(currentWorker); processedWorkers.add(currentWorker); } j++; } else { System.exit(0); } log("Workers Done: " + processedWorkers.size() + " -> " + processedWorkers); log("Workers Left: " + workersToDo.size() + " -> " + workersToDo); workersToDo.addAll(processedWorkers); /* * for (Integer w : workers) { log.debug(w + " processed " + * w.getProcessCount()); } */ } } public static void log(Object o) { System.out.println(o.toString()); } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Timer timer; timer = new Timer(); timer.schedule(new RemindTask(), 0, lapsDeTemp); } }
Merci ^^
dans ton code, remplace le System.exit(0) par un appel à cancel() et la tâche se terminera sans arrêter la JVM (je suppose que c'est ça que tu demande).
Si tu veux fixer la date de fin à "maintenant + 15 minutes", c'est
endDate = new Date(System.currentTimeMillis()+15*60*1000);
Partager