用兩個執行緒分別列印母音字母和子音字母,列印順序按照26個字母的自然排列順序。
其實,這種問題抓住幾個要點就好了,首先起碼得有兩個執行緒吧:
public class printletterthread implements runnable
}
簡單建立乙個實現runnable的類,等下就靠它執行任務了。分別給兩個執行緒起乙個便於識別的名字,先把執行**寫出來,我們倒著往回寫,什麼叫測試驅動開發。
下面需要把run方法實現一下,兩個執行緒列印26個字母,打完為止,搞乙個無限迴圈,然後在打完字母後退出迴圈。
@override
public void run()else if(!isyuanying(ch) && "fuying".equals(thread.currentthread().getname()))
}else }}
這裡說明下,我就不寫26個字母了,使用ascii碼值,97~122就是26個字母了,每次列印完把碼值加1,列印下乙個字母。
可能有人會在這裡上鎖,上鎖當然是可以搞定的,由於我這裡判斷了執行緒的名字,所以即便是++操作執行緒不安全,兩個執行緒也無法共享同乙個ch,什麼叫無鎖併發。
簡單粗暴一些,還是倒著往回寫,現在還差乙個判斷母音字母的小方法,這裡新增一下:
char ch = 97;
public boolean isyuanying(char ch) else
}
跟著**思路再遊走一遍,貌似沒啥問題,run一下看看結果:
總結:面試就是乙個互相了解的過程,遇到問題慢慢分析一波,解題方法千萬條,簡單粗暴第一條。因為這裡run方法指定了只能由母音執行緒列印母音字母,子音執行緒列印子音字母,所以兩個執行緒不用考慮先後啟動順序。完
多執行緒技術 兩個執行緒交替列印奇數和偶數
1.要列印的資源 1 package com.mytest.thread 2 3 4 要列印的資源 5 6 7 public class num 2.列印奇數的執行緒 1 package com.mytest.thread 2 3 public class printodd implements r...
兩個執行緒交替列印數字 Condition喚醒與等待
b 看到一道關於多執行緒題 如何實現兩個執行緒交替列印數字0 9?b 首先我們會想到要實現交替列印,那麼就要其中乙個執行的時候,另外乙個處於等待狀態,當該執行緒執行完的時候,喚醒另外乙個。如此執行就可實現。我們可以通過wait和notify對執行緒進行狀態控制,並且我們需要兩個監視器分別對這兩個執行...
兩個執行緒交替列印0 100的即偶數
兩個執行緒交替列印0 100的寄偶數,用wait和notify public class waitnotifyprintoddevenwait 1.拿到鎖,我們就列印 2。一旦列印完喚醒其他執行緒就休眠 static class turningrunner implements runnable c...