λογισμικό

* Γνώση Υπολογιστών >> λογισμικό >> Λογισμικό Utility

Για να φτιάξετε ένα Κυκλικές Executive σε Java

Ένα κυκλικό εκτελεστικό παρέχει μια εναλλακτική λύση για τη σύνταξη ενός πλήρως ανεπτυγμένο , το λειτουργικό σύστημα σε πραγματικό χρόνο . Αποτελείται από ένα άπειρο βρόχο που περιέχει δέσμες ενεργειών . Κάθε ομάδα έχει προηγηθεί μια περίοδος αναμονής που ελέγχει όταν η συσκευή είναι η υλοποίηση δράσεων του . Ο κώδικας που ακολουθεί είναι ένα παράδειγμα: ενώ η (πραγματική ) { //περιμένει 3 secondswait ( 3000 ) ;//λάβετε ένα μήνυμα δικτύου ....... //περιμένετε 2 δευτερόλεπτα για την πλήρη λήψη του messagewait ( 2000 ) ;//σαρώσει τα περιεχόμενα του μηνύματος ....... } Αυτά τα σύνολα δράσης μπορεί να τρέξει συχνά ταυτόχρονα με κάποιο βαθμό συγχρονισμού . Στην Java , τα θέματα που είναι ένας μηχανισμός για τη λειτουργία ταυτόχρονες εργασίες χρησιμοποιώντας παύσεις για να βοηθήσει στο συγχρονισμό . Οδηγίες
Προσδιορίστε Εργασίες

1

Επιλέξτε ένα πρότυπο σχέδιο που είναι πιο κοντά στις απαιτήσεις συμπεριφορά της εφαρμογής που πρόκειται να κατασκευαστεί ως ένα κυκλικό εκτελεστικό . Βεβαιωθείτε ότι το πρότυπο σχέδιο καλύπτει το περιεχόμενο του βρόχου που απαρτίζουν το κυκλικό εκτελεστική εξουσία. 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

Προετοιμάστε το πακέτο παράδοσης αίτηση , συμπεριλαμβανομένης της κατηγορίας ( εκτελέσιμα ) αρχεία για κάθε ένα από τα θέματα της διαδικασίας , η κύρια κατηγορία , μηνύματα τάξεις υποστήριξης και καταγραφής ρεύμα τάξη . Περιλαμβάνουν σενάρια που ξεφορτώνουν και να δημιουργήσει τα αρχεία κατηγορίας , καθώς και η προετοιμασία του καταλόγου , όπου το νήμα της διαδικασίας αρχεία καταγραφής πρέπει να βρίσκονται .
Η
εικόνων

Συναφής σύστασή

Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα