首頁 資訊 java多線程實現(xiàn)體重跟蹤

java多線程實現(xiàn)體重跟蹤

來源:泰然健康網(wǎng) 時間:2024年12月18日 13:59

2023-01-28 394 發(fā)布于黑龍江

版權(quán)

舉報

版權(quán)聲明:

本文內(nèi)容由阿里云實名注冊用戶自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,阿里云開發(fā)者社區(qū)不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。具體規(guī)則請查看《 阿里云開發(fā)者社區(qū)用戶服務(wù)協(xié)議》和 《阿里云開發(fā)者社區(qū)知識產(chǎn)權(quán)保護(hù)指引》。如果您發(fā)現(xiàn)本社區(qū)中有涉嫌抄襲的內(nèi)容,填寫 侵權(quán)投訴表單進(jìn)行舉報,一經(jīng)查實,本社區(qū)將立刻刪除涉嫌侵權(quán)內(nèi)容。

簡介: java多線程實現(xiàn)體重跟蹤

實驗?zāi)康? 

1.掌握J(rèn)ava多線程并行執(zhí)行的過程;

2.了解多線程生命周期和運行機(jī)制。

3.能編寫并行執(zhí)行的多線程程序。

實驗任務(wù)與要求

設(shè)計兩個人類對象(例如:男和女),通過每天吃東西和運動,來計算他們生活一個月后的體重。

實驗原理(技術(shù))

實驗原理

多線程可以充分利用CUP資源,進(jìn)一步提升程序執(zhí)行效率。通過實現(xiàn),

Runnable接口能實現(xiàn)多線程。

Runnable接口創(chuàng)建并啟動線程的步驟:

(1)創(chuàng)建一一個類實現(xiàn)Runnable接口;

(2)重寫run()方法(線程要執(zhí)行的內(nèi)容) ;

(3)創(chuàng)建Thread類對象,將實現(xiàn)Runnable接口的類的對象做為參數(shù),傳遞

到Thread類的構(gòu)造方法中(Thread (Runnable runable))。

(4)通過Thread類對象調(diào)用start()方法開啟線程。

實驗記載  

步驟(算法、程序)、數(shù)據(jù)記錄與處理、結(jié)果分析等

//Human類

1. package com.experiment05; 2. 3. 4. 5. import java.math.BigDecimal; 6. 7. 8. 9. public abstract class Human implements Runnable { 10. 11. // 定義私有屬性 姓名 體重 12. 13. private String name; 14. 15. private double weight; 16. 17. // 構(gòu)造方法 18. 19. public Human(String name, double weight) { 20. 21. this.name = name; 22. 23. this.weight = weight; 24. 25. } 26. 27. // get set 方法 28. 29. 30. 31. public String getName() { 32. 33. return name; 34. 35. } 36. 37. 38. 39. public void setName(String name) { 40. 41. this.name = name; 42. 43. } 44. 45. 46. 47. public double getWeight() { 48. 49. return weight; 50. 51. } 52. 53. 54. 55. public void setWeight(double weight) { 56. 57. this.weight = weight; 58. 59. } 60. 61. // 自我介紹 62. 63. public void introduce(){ 64. 65. double v = new BigDecimal(weight).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); 66. 67. System.out.println("大家好!我叫"+this.name+",體重"+v); 68. 69. } 70. 71. // run 72. 73. public void run(){ 74. 75. introduce(); 76. 77. // 30天生活 78. 79. for (int i=0;i<30;i++){ 80. 81. lifeEveryday(); 82. 83. } 84. 85. introduce(); 86. 87. } 88. 89. // 抽象方法 lifeEveryday 90. 91. public abstract void lifeEveryday(); 92. 93. }

//Man類

1. package com.experiment05; 2. 3. 4. 5. public class Man extends Human{ 6. 7. public Man(String name, double weight) { 8. 9. super(name, weight); 10. 11. } 12. 13. public void lifeEveryday(){ 14. 15. // 男人每天吃飯和運動的場景 16. 17. // 晨練,體重減少0.1 18. 19. System.out.println(this.getName()+"晨練!"); 20. 21. this.setWeight(this.getWeight()-0.1); 22. 23. // 吃早飯,體重增加0.2 24. 25. System.out.println(this.getName()+"吃早飯!"); 26. 27. this.setWeight(this.getWeight()+0.2); 28. 29. // 吃午飯,體重增加0.3 30. 31. System.out.println(this.getName()+"吃午飯!"); 32. 33. this.setWeight(this.getWeight()+0.3); 34. 35. // 下午運動,體重減少0.3 36. 37. System.out.println(this.getName()+"運動!"); 38. 39. this.setWeight(this.getWeight()-0.3); 40. 41. // 吃晚飯,體重增加0.1 42. 43. System.out.println(this.getName()+"吃晚飯!"); 44. 45. this.setWeight(this.getWeight()+0.1); 46. 47. } 48. 49. }

//Woman類

1. package com.experiment05; 2. 3. 4. 5. public class Women extends Human{ 6. 7. public Women(String name, double weight) { 8. 9. super(name, weight); 10. 11. } 12. 13. public void lifeEveryday(){ 14. 15. // 女人每天吃飯和運動的場景 16. 17. // 晨跑,體重減少0.2 18. 19. System.out.println(this.getName()+"晨跑!"); 20. 21. this.setWeight(this.getWeight()-0.2); 22. 23. // 吃早飯,體重增加0.2 24. 25. System.out.println(this.getName()+"吃早飯!"); 26. 27. this.setWeight(this.getWeight()+0.2); 28. 29. // 吃午飯,體重增加0.3 30. 31. System.out.println(this.getName()+"吃午飯!"); 32. 33. this.setWeight(this.getWeight()+0.3); 34. 35. // 下午瑜伽運動,體重減少0.3 36. 37. System.out.println(this.getName()+"瑜伽運動!"); 38. 39. this.setWeight(this.getWeight()-0.3); 40. 41. // 吃晚飯,體重增加0.1 42. 43. System.out.println(this.getName()+"吃晚飯!"); 44. 45. this.setWeight(this.getWeight()+0.1); 46. 47. 48. 49. } 50. 51. }

//test類

1. package com.experiment05; 2. 3. 4. 5. public class test { 6. 7. public static void main(String[] args) { 8. 9. Man man = new Man("湯姆", 100); 10. 11. Women women = new Women("杰瑞", 80); 12. 13. Thread thread1 = new Thread(man); 14. 15. Thread thread2 = new Thread(women); 16. 17. thread1.start(); 18. 19. thread2.start(); 20. 21. } 22. 23. }

測試結(jié)果

總結(jié)

通過本次實驗?zāi)芫帉懖⑿袌?zhí)行的多線程程序,掌握J(rèn)ava多線程并行執(zhí)行的過程,了解多線程生命周期和運行機(jī)制。

相關(guān)文章

java如何請求接口然后終止某個線程

通過本文的介紹,您應(yīng)該能夠理解如何在Java中請求接口并根據(jù)返回結(jié)果終止某個線程。合理使用標(biāo)志位或 `interrupt`方法可以確保線程的安全終止,而處理好網(wǎng)絡(luò)請求中的各種異常情況,可以提高程序的穩(wěn)定性和可靠性。

Java多線程編程的陷阱與解決方案####

本文深入探討了Java多線程編程中常見的問題及其解決策略。通過分析競態(tài)條件、死鎖、活鎖等典型場景,并結(jié)合代碼示例和實用技巧,幫助開發(fā)者有效避免這些陷阱,提升并發(fā)程序的穩(wěn)定性和性能。 ####

Java中的線程池優(yōu)化實踐####

本文深入探討了Java中線程池的工作原理,分析了常見的線程池類型及其適用場景,并通過實際案例展示了如何根據(jù)應(yīng)用需求進(jìn)行線程池的優(yōu)化配置。文章首先介紹了線程池的基本概念和核心參數(shù),隨后詳細(xì)闡述了幾種常見的線程池實現(xiàn)(如FixedThreadPool、CachedThreadPool、ScheduledThreadPool等)的特點及使用場景。接著,通過一個電商系統(tǒng)訂單處理的實際案例,分析了線程池參數(shù)設(shè)置不當(dāng)導(dǎo)致的性能問題,并提出了相應(yīng)的優(yōu)化策略。最終,總結(jié)了線程池優(yōu)化的最佳實踐,旨在幫助開發(fā)者更好地利用Java線程池提升應(yīng)用性能和穩(wěn)定性。 ####

Java多線程編程的陷阱與最佳實踐####

本文深入探討了Java多線程編程中常見的陷阱,如競態(tài)條件、死鎖和內(nèi)存一致性錯誤,并提供了實用的避免策略。通過分析典型錯誤案例,本文旨在幫助開發(fā)者更好地理解和掌握多線程環(huán)境下的編程技巧,從而提升并發(fā)程序的穩(wěn)定性和性能。 ####

Java多線程編程中的陷阱與最佳實踐####

本文探討了Java多線程編程中常見的陷阱,并介紹了如何通過最佳實踐來避免這些問題。我們將從基礎(chǔ)概念入手,逐步深入到具體的代碼示例,幫助開發(fā)者更好地理解和應(yīng)用多線程技術(shù)。無論是初學(xué)者還是有經(jīng)驗的開發(fā)者,都能從中獲得有價值的見解和建議。 ####

Java中的多線程編程與并發(fā)控制

本文深入探討了Java編程語言中多線程編程的基礎(chǔ)知識和并發(fā)控制機(jī)制。文章首先介紹了多線程的基本概念,包括線程的定義、生命周期以及在Java中創(chuàng)建和管理線程的方法。接著,詳細(xì)講解了Java提供的同步機(jī)制,如synchronized關(guān)鍵字、wait()和notify()方法等,以及如何通過這些機(jī)制實現(xiàn)線程間的協(xié)調(diào)與通信。最后,本文還討論了一些常見的并發(fā)問題,例如死鎖、競態(tài)條件等,并提供了相應(yīng)的解決策略。

深入理解Java中的線程池實現(xiàn)原理及其性能優(yōu)化####

本文旨在揭示Java中線程池的核心工作機(jī)制,通過剖析其背后的設(shè)計思想與實現(xiàn)細(xì)節(jié),為讀者提供一份詳盡的線程池性能優(yōu)化指南。不同于傳統(tǒng)的技術(shù)教程,本文將采用一種互動式探索的方式,帶領(lǐng)大家從理論到實踐,逐步揭開線程池高效管理線程資源的奧秘。無論你是Java并發(fā)編程的初學(xué)者,還是尋求性能調(diào)優(yōu)技巧的資深開發(fā)者,都能在本文中找到有價值的內(nèi)容。 ####

Java多線程并發(fā)編程:同步機(jī)制與實踐應(yīng)用

本文深入探討Java多線程中的同步機(jī)制,分析了多線程并發(fā)帶來的數(shù)據(jù)不一致等問題,詳細(xì)介紹了`synchronized`關(guān)鍵字、`ReentrantLock`顯式鎖及`ReentrantReadWriteLock`讀寫鎖的應(yīng)用,結(jié)合代碼示例展示了如何有效解決競態(tài)條件,提升程序性能與穩(wěn)定性。

Java線程管理:守護(hù)線程與用戶線程的區(qū)分與應(yīng)用

在Java多線程編程中,線程可以分為守護(hù)線程(Daemon Thread)和用戶線程(User Thread)。這兩種線程在行為和用途上有著明顯的區(qū)別,了解它們的差異對于編寫高效、穩(wěn)定的并發(fā)程序至關(guān)重要。

Java線程管理:守護(hù)線程與本地線程的深入剖析

在Java編程語言中,線程是程序執(zhí)行的最小單元,它們可以并行執(zhí)行以提高程序的效率和響應(yīng)性。Java提供了兩種特殊的線程類型:守護(hù)線程和本地線程。本文將深入探討這兩種線程的區(qū)別,并探討它們在實際開發(fā)中的應(yīng)用。

目錄

實驗?zāi)康?  實驗任務(wù)與要求 實驗原理(技術(shù)) 實驗記載   測試結(jié)果

相關(guān)知識

【Node.js Vue】健康健身追蹤系統(tǒng),幫你解決運動計劃難題,實時跟蹤成效,讓每一次鍛煉都精準(zhǔn)有效【Node.js
REK體重跟蹤小程序介紹和使用說明
java輸入性別身高體重計算體重指數(shù)
如何在《好體知》軟件中跟蹤體重的變化?
Java技能提升:破解“技能冷卻”,高效學(xué)習(xí)攻略揭秘
三星通過其健康應(yīng)用程序減少體重和卡路里攝入跟蹤
運動健康數(shù)據(jù)可視化:基于 Echarts 和 Java SpringBoot 的動態(tài)實時大屏范例
MyFitnessPal v24.45.1 for Android 解鎖高級版 —— 一款全球相當(dāng)受歡迎的健康和健身跟蹤管理應(yīng)用
基于Android的健康飲食搭配應(yīng)用設(shè)計與實現(xiàn)
健康飲食瘦身跟蹤

網(wǎng)址: java多線程實現(xiàn)體重跟蹤 http://www.u1s5d6.cn/newsview622010.html

推薦資訊