Επιλέξτε ένα πρότυπο σχέδιο που είναι πιο κοντά στις απαιτήσεις συμπεριφορά της εφαρμογής που πρόκειται να κατασκευαστεί ως ένα κυκλικό εκτελεστικό . Βεβαιωθείτε ότι το πρότυπο σχέδιο καλύπτει το περιεχόμενο του βρόχου που απαρτίζουν το κυκλικό εκτελεστική εξουσία. 2
Συνδυάστε τις συμπεριφορές του προτύπου σχεδιασμού με τις απαιτήσεις της εφαρμογής . Βεβαιωθείτε ότι κάθε μία από τις συγχρονισμένες , συνεργαζόμενες διεργασίες που σχετίζονται με κάθε μία από τις συμπεριφορές που περιγράφονται στην αίτηση .
Εικόνων 3
Προσδιορισμός των Java - ειδικές λεπτομέρειες που συνθέτουν κάθε μία από τις κατηγορίες Θέματος διαδικασία της αίτησης. Σιγουρευτείτε για να δημιουργήσει μια παύση συγχρονισμού για κάθε κατηγορία διαδικασία Thread για να διασφαλιστεί η σωστή χρονική στιγμή μεταξύ των διαδικασιών και αποφυγή άστοχων συνθήκες , όπως ιπποδρομίες . Δημιουργήσουν τάξεις υποστήριξης για να ενεργεί ως ανταλλαγή δεδομένων μεταξύ των ρυθμιστικά διαδικασίες, όπως ουρές , όπως απαιτείται . Δημιουργήστε μια κλάση ρεύμα καταγραφής, για να καθορίσει τα αρχεία καταγραφής ανίχνευσης της εκτέλεσης κάθε διαδικασίας νήμα .
Εικόνων Οργανώστε το πακέτο
Η 4
οικοδομήσουμε μια κυκλική εκτελεστικό κύρια κατηγορία που instantiates τις τάξεις Θέματος διαδικασία , ειδικές τάξεις υποστήριξης και κάθε άλλη απαιτούμενη προετοιμασία , όπως οι εξής :
τάξη CyclicExec { δημόσια στατική άκυρη κύρια ( String [ ] args ) { //αρχικοποίηση αναγκαίους πόρους .......... ........................... //ορίσετε ένα νήμα classLogStream καταγραφής ls = νέα LogStream ( ) ? ......... ............................ //αρχικοποίηση τάξεις υποστήριξης ................. .................... MsgQueue τετραγωνικά = νέα MsgQueue ( .... ) ? .................. ................... //αρχικοποίηση τάξεις νήμα διαδικασία ......................... ............ //υπόσταση της διαδικασίας Process_1 και να καθορίσει συνδέονται threadProcess_1 p1 = new Process_1 ( ...... ) της ? T_Process_1 = νέου νήματος ( p1 ) ;//ενεργοποιήσετε το νήμα για Process_1try { T_Process_1.start ( ) ? } αλιευμάτων ( IllegalThreadStateException ε) { //καταγράψει ένα κακό ξεκίνημα, το νήμα και την έξοδο .......................... ........... } } }
5
Προσθήκη στο πακέτο κάθε μία από τις κατηγορίες Θέματος διαδικασία, όπως το ακόλουθο παράδειγμα:
τάξη Process_1 εκτείνεται Θέμα { //initializationpublic Process_1 ( .... ) { //δημιουργήσει ένα αρχείο καταγραφής για αυτό το νήμα ( p_s είναι προκαθορισμένες log αντικείμενο ροής ) PrintStream p1_s = p_s.make_it ( Processs_1_Log_File ) ;//προετοιμάσει το νήμα διαδικασία .. ................................... } .............. ....................... //εκτέλεση - ζητηθεί μέσω του έμμεσου εκκίνησης ( μέθοδος ) που χρησιμοποιείται στην κύρια classpublic void run () { //πυρήνα loopwhile ( true) διεργασία { //core ..................................... //παύση μετά την εκτέλεση ενός κύκλο του πυρήνα processtry { ύπνου ( Process_1_Wait ) ? } αλιευμάτων ( InterruptedException ε) { //log μια εξαίρεση παύση .......................... ............. } } } }
Η 6
Φτιάξτε τα μαθήματα υποστήριξης που ορίζουν μηνυμάτων προσκρουστήρες μεταξύ Θέματα διαδικασία με τις μεθόδους πρόσβασης ρυθμιστικό της χαρακτηριστεί ως συγχρονισμένη , όπως τα ακόλουθα παράδειγμα:
δημόσια συγχρονισμένη byte PushIt ( byte Itm ) { ................................ ............................. }
Η 7
Φτιάξτε μια ειδική κατηγορία που καθορίζει τα αρχεία καταγραφής ανίχνευσης η συμπεριφορά των κατηγοριών Θέματος διαδικασία , όπως :
τάξη LogStream { ιδιωτικού boolean LogState ;//τάξη initializerpublic LogStream ( String LogStateIn ) { this.LogState = false ? εάν ( LogStateIn.equals ( " ναι " ) ) this.LogState = true ? } //δημιουργήσει ένα ρεύμα καταγραφής σε μια filepublic PrintStream make_it ( String LogLocation ) { PrintStream This1 ? String επιτακτικές αυτές ανάγκες 2 ? εάν ( this.LogState ) { επιτακτικές αυτές ανάγκες 2 = new String ( LogLocation ) ? } else { επιτακτικές αυτές ανάγκες 2 = new String ( " /dev /null " ) ? } { προσπαθήσουμε This1 = νέα PrintStream ( νέα FileOutputStream ( επιτακτικές αυτές ανάγκες 2 , true) ) ? } αλιευμάτων ( Εξαίρεση ε ) { This1 = null? } επιστροφή This1 ? } }
Η δοκιμή και Παράδοση
8
Ορίστε μια σειρά από σενάρια δοκιμών για την κάλυψη τόσο ακραίες και κανονικές συνθήκες λειτουργίας , προκειμένου να βελτιώσετε το συγχρονισμό μεταξύ των νημάτων της διαδικασίας .
Η 9
Εξετάστε τα αρχεία καταγραφής νήμα διαδικασία για να βεβαιωθείτε ότι οι τάξεις Θέματος διαδικασία λειτουργεί όπως αναμένεται . Βεβαιωθείτε ότι δεν υπάρχουν αγώνες ή παρόμοιες συνθήκες συνέβη .
Η 10
Προετοιμάστε το πακέτο παράδοσης αίτηση , συμπεριλαμβανομένης της κατηγορίας ( εκτελέσιμα ) αρχεία για κάθε ένα από τα θέματα της διαδικασίας , η κύρια κατηγορία , μηνύματα τάξεις υποστήριξης και καταγραφής ρεύμα τάξη . Περιλαμβάνουν σενάρια που ξεφορτώνουν και να δημιουργήσει τα αρχεία κατηγορίας , καθώς και η προετοιμασία του καταλόγου , όπου το νήμα της διαδικασίας αρχεία καταγραφής πρέπει να βρίσκονται .
Η
εικόνων
Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα