




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、1)第一個程序:LeftAndRight.javapublic class LeftAndRight public static void main(String args) Lefthand left;/聲明線程類對象Righthand right;left = new Lefthand();/ 新建線程。right = new Righthand();left.start(); / 線程開始運行后,Lefthand類中的run方法將被執(zhí)行。right.start();for (int i = 0; i <= 6; i+) System.out.println("我是主線程&
2、quot;);class Lefthand extends Thread public void run() for (int i = 1; i <= 9; i+) System.out.println("我是左手線程");try /線程執(zhí)行一次輸出后,休眠500ms(毫秒),使自己放棄CPU資源,/500ms時間到后,重新排隊等待CPU的調(diào)度sleep(500); catch (InterruptedException e) /如果線程在休眠期被打斷,將拋出InterruptedException,/所以sleep方法需要在trycatch語句塊中被調(diào)用class
3、Righthand extends Thread public void run() for (int i = 1; i <= 5; i+) System.out.println("我是右手線程");try sleep(300); catch (InterruptedException e) 2)第二個程序:StudentAndTeacher.javapublic class StudentAndTeacher /* * 兩個線程共享一個對象ComputerSum sum,在運行的過程中修改這個對象的成員變量sum。 * 為了使結(jié)果盡量不依賴于當(dāng)前CPU資源的使用情況
4、,應(yīng)當(dāng)讓線程主動調(diào)用sleep方法,讓出CPU的控制權(quán)進入中斷狀態(tài) */public static void main(String args) / TODO Auto-generated method stubComputerSum sum = new ComputerSum();People teacher = new People("教師", 100, sum);People student = new People("學(xué)生", 100, sum);teacher.start();student.start();class ComputerSum
5、/線程共享的對象類ComputerSum,其中定義了一個數(shù)據(jù)成員sumint sum=0;public void setSum(int n) sum = n;public int getSum() return sum;class People extends Thread /類People是Thread的子類ComputerSum computerSum;int timeLength;People(String s, int timeLength, ComputerSum sum) /構(gòu)造方法setName(s);/ 設(shè)置Thread的名稱this.timeLength = timeLeng
6、th;/設(shè)置休眠時間puterSum = sum;/設(shè)置ComputerSum類的對象sumpublic void run() /重寫Thread父類的run()方法for (int i = 1; i <= 5; i+) int m = computerSum.getSum();/取出computerSum對象中的數(shù)據(jù)成員sumcomputerSum.setSum(m+1);/將數(shù)據(jù)成員sum的值加1System.out.println("我是" + getName() + ",現(xiàn)在的和是" + computerSum.getSum();/輸出當(dāng)前
7、處于運行中的線程的信息try sleep(timeLength);/線程休眠timeLength毫秒 catch (InterruptedException e) 3)第三個程序:StudentAndTeacher1.javapublic class StudentAndTeacher1 /* * StudentAndTeacher1為StudentAndTeacher的改進版本 */public static void main(String args) / TODO Auto-generated method stubComputerSum sum = new ComputerSum();
8、People1 people = new People1(200, sum);people.teacher.start();people.student.start();class ComputerSum1 / 線程共享的對象類ComputerSum,其中定義了一個數(shù)據(jù)成員sumint sum = 0;public void setSum(int n) sum = n;public int getSum() return sum;class People1 implements Runnable / 類People是Thread的子類ComputerSum computerSum;int ti
9、meLength;Thread teacher, student;People1(int timeLength, ComputerSum sum) / 構(gòu)造方法teacher = new Thread(this);/類People1實現(xiàn)了接口Runnableteacher.setName("教師");student = new Thread(this);student.setName("學(xué)生");this.timeLength = timeLength;/ 設(shè)置休眠時間puterSum = sum;/ 設(shè)置ComputerSum類的對象sumpublic
10、 synchronized void computer(Thread thread) int m = computerSum.getSum();/ 取出computerSum對象中的數(shù)據(jù)成員sumcomputerSum.setSum(m + 1);/ 將數(shù)據(jù)成員sum的值加1System.out.println("我是" + thread.getName() + ",現(xiàn)在的和是"+ computerSum.getSum();public void run() / 重寫Thread父類的run()方法for (int i = 1; i <= 5; i
11、+) if (Thread.currentThread() = teacher) computer(teacher); else if (Thread.currentThread() = student) computer(student);try Thread.sleep(timeLength);/ 線程休眠timeLength毫秒 catch (InterruptedException e) 4)第四個程序:GuessNumberGame.java/*猜數(shù)程序第一個線程givenNumberThread負責(zé)隨機給出1-100之間的一個整數(shù)第二個線程guessNumberThread負責(zé)猜出
12、這個數(shù)每當(dāng)?shù)诙€線程給出自己的猜測后第一個線程會將其比較后,提示“猜大了”,“猜小了”,“猜對了”*/public class GuessNumberGame public static void main(String args) GuessNumber gn = new GuessNumber();gn.givenNumberThread.start();/啟動線程gn.guessNumberThread.start();class GuessNumber implements Runnable int realNumber, guessNumber, min = 0, max = 100
13、, message;/realNumber:隨機數(shù);guessNumber:某次猜得的數(shù);message:提示信息final int SMALLER = -1, LARGER = 1, SUCCESS = 8;Thread guessNumberThread, givenNumberThread;/guessNumberThread:線程,給出隨機整數(shù)并判定線程givenNumberThread猜得的數(shù)字是否正確GuessNumber() guessNumberThread = new Thread(this);givenNumberThread = new Thread(this);publ
14、ic void run() for (int i = 1; true; i+) if (Thread.currentThread() = givenNumberThread) /如果當(dāng)前正在運行的線程是givenNumberThreadif (i = 1) /givenNumberThread線程第一次運行時,給出一個隨機數(shù)realNumber = (int) (Math.random() * 100) + 1;System.out.println("給你一個隨機數(shù),猜猜是多少?realNumber="+realNumber); else /*比較guessNumber和r
15、ealNumber的大小,并向猜數(shù)線程guessNumberThread傳遞猜大了或猜小了等信息*/if (guessNumber > realNumber) /猜得的數(shù)偏大message = LARGER;System.out.println("您猜的數(shù)偏大"); else if (guessNumber < realNumber) /猜得的數(shù)偏小message = SMALLER;System.out.println("您猜的數(shù)偏小"); else if (guessNumber = realNumber) /猜對了,guessNumbe
16、r = realNumbermessage = SUCCESS;System.out.println("恭喜,您猜對了!");return;/猜對了,givenNumberThread運行結(jié)束,返回/ elsetry Thread.sleep(1500);/休眠1000毫秒,讓出CPU資源給其他線程 catch (InterruptedException e) / ifif (Thread.currentThread() = guessNumberThread) /如果當(dāng)前正在運行的線程是guessNumberThreadif (i = 1) /*guessNumberTh
17、read線程第一次運行時,guessNumber = (min + max) / 2=(0+100)/2=50后面guessNumberThread采用“折半”查找的原理根據(jù)每次從guessNumberThread那里得到的提示信息,修改max或min的值,給出新的guessNumber的取值*/guessNumber = (min + max) / 2;System.out.println("我猜這個數(shù)是" + guessNumber); else if (message = SMALLER) min = guessNumber;guessNumber = (min +
18、max) / 2;System.out.println("我猜這個數(shù)是" + guessNumber); else if (message = LARGER) max = guessNumber;guessNumber = (min + max) / 2;System.out.println("我猜這個數(shù)是" + guessNumber); else if (message = SUCCESS) /根據(jù)message得知猜對了,guessNumberThread運行結(jié)束,返回System.out.println("我成功了!");re
19、turn;/ elsetry Thread.sleep(1500);/休眠1000毫秒,讓出CPU資源給其他線程 catch (InterruptedException e) / if5)第五個程序GuessNumberGame1.java代碼略。6)第六個程序ScrollWordsAndTimer.java/* * 本例中是一個帶滾動字幕的小時鐘,在文本框中顯示系統(tǒng)當(dāng)前時間, * 滾動的字幕在單擊“加速”鍵后,會加速字幕的滾動速度; 單擊“停止“后,會停止?jié)L動 * 單擊”開始“后,文字會重新開始滾動 */public class ScrollWordsAndTimer public stat
20、ic void main(String args) new SrollingAndTimerFrame();class SrollingAndTimerFrame extends JFrame implements Runnable, ActionListener JButton fastWordsBtn, stopWordsBtn, startWordsBtn, startTimerBtn,stopTimerBtn;/ 加速滾動文字,停止?jié)L動文字,(重新)開始滾動文字,開始顯示時間,停止顯示時間JLabel labelOfScrollWords, labelOfBlank, labelOfT
21、imer;Thread scrollWordsThread, timerThread;/ 滾動文字線程,顯示時鐘線程/ JTextArea textOfTime;JTextField textOfTime;/ 顯示時鐘的文本框boolean stopScrolling, stopTimer;/ 是否停止?jié)L動標(biāo)志位,是否停止顯示系統(tǒng)時間標(biāo)志位SrollingAndTimerFrame() setTitle("一個帶滾動字幕的小字典");setLayout(new FlowLayout();fastWordsBtn = new JButton("加速滾動")
22、;startWordsBtn = new JButton("開始滾動");startWordsBtn.setEnabled(false);stopWordsBtn = new JButton("停止?jié)L動");startTimerBtn = new JButton("開始顯示時間");stopTimerBtn = new JButton("停止顯示時間");fastWordsBtn.addActionListener(this);/ 注冊事件監(jiān)視器startWordsBtn.addActionListener(thi
23、s);stopWordsBtn.addActionListener(this);stopTimerBtn.addActionListener(this);startTimerBtn.addActionListener(this);textOfTime = new JTextField(10);labelOfBlank = new JLabel(" ");JPanel jp1 = new JPanel();jp1.add(textOfTime);jp1.add(startTimerBtn);jp1.add(stopTimerBtn);add(jp1);JPanel jp2 =
24、 new JPanel();jp2.add(labelOfBlank);jp2.add(fastWordsBtn);jp2.add(startWordsBtn);jp2.add(stopWordsBtn);add(jp2);labelOfScrollWords = new JLabel("歡迎使用本系統(tǒng)!");/ JLabel,負責(zé)滾動文字的顯示add(labelOfScrollWords);scrollWordsThread = new Thread(this);/ 創(chuàng)建線程timerThread = new Thread(this);setBounds(100, 100
25、, 420, 200);setVisible(true);validate();setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);scrollWordsThread.start();/ 啟動滾動文字線程public void run() if (Thread.currentThread() = scrollWordsThread) / 如果當(dāng)前正在運行中的線程是scrollWordsThreadwhile (true) int x = labelOfScrollWords.getBounds().x;int y = 120;x += 5;/ 水平坐標(biāo)
26、labelOfScrollWords.setLocation(x, y);/ 將滾動文字移動到新位置if (x > 380) x = 10;labelOfScrollWords.setLocation(x, y);try scrollWordsThread.sleep(1000); catch (InterruptedException ex) if (stopScrolling = true) / 如果單擊了”停止?jié)L動“按鈕,線程scrollWordsThread結(jié)束返回return;else if (Thread.currentThread() = timerThread) / 如果當(dāng)前正在運行中的線程是timerThreadwhile (true) Date date = new Date();String str = date.toString().substring(11, 19);/ 把date中的時間提取出來textOfTime.setText(str);/ 把時間顯示在文本框中try Thread.sleep(1000);/ 休眠1000毫秒 catch (InterruptedException ex) if (stopTimer = true) return;/ 如果單擊了停
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- T-ZZB Q071-2024 酶底物法微生物智能培養(yǎng)計數(shù)一體機
- T-ZJHIA 16-2024 特殊醫(yī)學(xué)用途配方食品臨床營養(yǎng)治療營養(yǎng)篩查數(shù)據(jù)集
- 二零二五年度離婚協(xié)議中夫妻共同財產(chǎn)清算補充協(xié)議
- 二零二五年度直播帶貨主播合作權(quán)益保障合同
- 2025年度智能制造合作伙伴協(xié)議書
- 二零二五年度木制家具生產(chǎn)廠木工用工協(xié)議書
- 二零二五年度車輛掛靠運輸合同車輛運輸合同安全保障協(xié)議
- 二零二五年度個人租賃帶太陽能熱水系統(tǒng)住宅合同
- 二零二五年度餐飲行業(yè)知識產(chǎn)權(quán)保護協(xié)議
- 二零二五年度兼職攝影師聘用合同模板
- 家校共育之道
- DeepSeek入門寶典培訓(xùn)課件
- 西安2025年陜西西安音樂學(xué)院專職輔導(dǎo)員招聘2人筆試歷年參考題庫附帶答案詳解
- 《作文中間技巧》課件
- 廣東省2025年中考物理仿真模擬卷(深圳)附答案
- 2025屆八省聯(lián)考 新高考適應(yīng)性聯(lián)考英語試題(原卷版)
- 新蘇教版一年級下冊數(shù)學(xué)第1單元第3課時《8、7加幾》作業(yè)
- 2024年山東電力高等專科學(xué)校高職單招職業(yè)技能測驗歷年參考題庫(頻考版)含答案解析
- 2024年電力交易員(高級工)職業(yè)鑒定理論考試題庫(單選題、多選題、判斷題)
- 《平面廣告賞析》課件
- 【公開課】同一直線上二力的合成+課件+2024-2025學(xué)年+人教版(2024)初中物理八年級下冊+
評論
0/150
提交評論