سؤال مقابلة كلاسيكي: يطبع خيطان ، على التوالي ، من بين الخيط A المطبوعات A ، الخيط B المطبوعات B ، 10 مرات لكل منهما ، بحيث يكون تأثير Abababa ...
حزمة com.shangshe.path ؛ الفئة العامة threadab { / ** * param args * / public static void main (string [] args) {Final Print Business = new print () ؛ مؤشر ترابط جديد (جديد RunNable () {public void run () {for (int i = 0 ؛ i <10 ؛ i ++) {business.print_a () ؛}}}}). start () ؛ مؤشر ترابط جديد (جديد RunNable () {public void run () {for (int i = 0 ؛ i <10 ؛ i ++) {business.print_b () ؛}}}}). start () ؛ }} class print {private boolean flag = true ؛ print print_a () {بينما (! } catch (interruptedException e) {// todo catch catch e.printstacktrace () ؛ }} system.out.print ("a") ؛ العلم = خطأ ؛ this.notify () ؛ } print_b () {بينما (flag) {flag) {try {this.wait () ؛ } catch (interruptedException e) {// todo catch catch e.printstacktrace () ؛ }} system.out.print ("b") ؛ العلم = صحيح ؛ this.notify () ؛ }}من المثال أعلاه ، يمكننا تصميم برنامج يحتوي على 3 مؤشرات ترابط أو حتى مؤشرات ترابط N. المثال الوارد أدناه هو 3 مؤشرات ترابط ، على التوالي ، يتم طباعة A و B و C 10 مرات ، بحيث يكون تأثير ABCABC ..
الفئة العامة threadabc { / ** * param args * / public static void main (string [] args) {Final Print Business = new print () ؛ New Thread (new RunNable () {public void run () {for (int i = 0 ؛ i <100 ؛ i ++) {business.print_a () ؛}}}). start () ؛ New Thread (new RunNable () {public void run () {for (int i = 0 ؛ i <100 ؛ i ++) {business.print_b () ؛}}}). start () ؛ مؤشر ترابط جديد (جديد RunNable () {public void run () {for (int i = 0 ؛ i <100 ؛ i ++) {business.print_c () ؛}}}). start () ؛ }} class print {private boolean should_a = true ؛ Boolean الخاص يجب أن _b = false ؛ يجب أن يكون Boolean الخاص _c = false ؛ print_a () {بينما (يجب (يجب (يجب (يجب (يجب أن) } catch (interruptedException e) {// todo catch catch e.printstacktrace () ؛ }} system.out.print ("a") ؛ يجب أن_ = خطأ ؛ anust_b = صحيح ؛ يجب Queft_c = خطأ ؛ this.notifyall () ؛ } print_b print_b () {بينما (يجب (يجب أن_) {this.wait () ؛ } catch (interruptedException e) {// todo catch catch e.printstacktrace () ؛ }} system.out.print ("b") ؛ يجب أن_ = خطأ ؛ anust_b = false ؛ يجب QUEST_C = صحيح ؛ this.notifyall () ؛ } print in print_c () {بينما (يجب أن_ } catch (interruptedException e) {// todo catch catch e.printstacktrace () ؛ }} system.out.print ("c") ؛ يجب أن_ = صحيح ؛ anust_b = false ؛ يجب Queft_c = خطأ ؛ this.notifyall () ؛ }}مرة أخرى ، أثبتت أهمية هندسة البرمجيات ؛ في البرامج متعددة الخيوط ، ينبغي القول أنه في البرامج ، يجب أن نضع رمز منطق العمل في نفس الفئة لجعله متماسكًا للغاية ومنخفضًا اقترانًا