Cet article décrit la méthode de Java pour implémenter des tâches de synchronisation basées sur la mise en commun des threads et le mécanisme de réflexion. Partagez-le pour votre référence, comme suit:
Il comprend principalement les classes d'implémentation suivantes:
1. Classe principale:
L'entrée à l'exécution de la tâche:
Appelez la méthode principale pour commencer à charger la configuration de la tâche et à exécuter la tâche
package com.yanek.task; @ param args * / public static void main (String [] args) {ScheduleDexeCutorService schedueXec = exécuteurs.NewScheduledThreadpool (1); ; I ++) {TaskModel tm = (taskModel) tasks.get (i);2. La classe MyTask implémente l'interface Runnable et l'appelle dans la classe principale
package com.yanek.task; MyTask (TaskModel TM) {this.taskmodel = tm;} public void run () {System.out.println ("Call at" + (new Date ())); (TaskModel .getClassName ()); Méthode GetMethod = CLASSType.getMethod (TaskModel.getMethodname (); E.PrintStackTrace ();} Catch (classNotFoundException e) {E.PrintStackTrace (); e) {e .printStackTrace ();}}}3. TaskModel: encapsulation des classes de tâches
package com.yanek.task; (String Methodname) {this.MethodName = méthodyname;} public long getInitialDelay () {return InitialDelay;} public void SetInitialDelay (Long I NitialDelay) {this.inItialDelay = InitialDelay; SetPeriod (longue période) {this.period = période;} String privé ClassName;4. Classe de résolution de configuration de la tâche XMLReader
package com.yanek.task; .Document; List getTasks () {list tasks = new ArrayList (); File (path); if (file.exists () &&! ; .getChildText ("classe"); .out .println (child.get (i) .getChildText ("Method"); String initialDelay = children.get (i) .getChildText ("InitialDelay"); ); "); tmodel.setperiod (Integer.Valueof (child.get (i) .getChildText (" period "))); System.out.println (child.get (i) .getChildText (" period "));)) ; ); Tâche AD Configure! "); Retour tâches;}}5. Fichier de configuration:
<? xml version = "1.0" Encoding = "UTF-8"?> <TaskConfig> <Task> <Class> com.yanek.task.taska </sclass> <méthode> testa </ méthode> <InitialDelay> 5 < / initialDelay> <émérique> 2 </riéodèle> </ task> <task> <sking> com.yanek.task.taskb </class> <méthode> testb </ méthode> <InitialDelay> 5 </InitialDelay> <Périod > 3 </ initial> </ task> <task> <casse> com.yanek.task.taskc </class> <méthode> testc </ méthode> <InitialDelay> 5 </nitialDelay> <émérique> 3 </émand > </ task> </ taskconfig>
6. Classe de tâches de test:
TaskA TaskB TaskC définit les méthodes statiques, et les méthodes statiques de ces classes sont configurées dans le fichier XML et sont appelées.
package com.yanek.task; classe publique Taska {/ ** * @param args * / public static void main (String [] args) {System.out.println ("Tâche un test"); () {System.out.println ("Taska Testa Method Call!");}} Package com.yanek.task; ) {System.out.println ("Task B Test");} Public Static Void TestB () {System.out.println ("TaskB TestB Method Call!");}} Package com.yanek.task; Tâchec {/ ** * @param args * / public static void main (String [] args) {System.out.println ("Task C test"); Tâchec TestC Method Call! ");}}J'espère que cet article sera utile à la programmation Java de tous.