實驗11 線程
一、實驗目的
1.?線程的概念、線程的生命周期。
2.?多線程的編程:繼承Thread類與使用Runnable接口。
3.?使用多線程機制實現動畫。
二、實驗要求
1.?掌握利用JAVA語言編寫多線程程序的方法
2.?掌握線程的調度方法
3.?掌握多線程環境中GUI程序的編寫方法
三、實驗內容
(一)Thread子類的方法實現多線程
1.?編寫KY11_1.java 程序文件,源代碼如下。
class SimpleThread extends Thread {
???? public SimpleThread(String str) {
???????? super(str);
???? }
???? public void run() {
???????? for (int i = 0; i < 10; i++) {
???????????? System.out.println(i + " " + getName());
???????????? try {
???????????????? sleep((int)(Math.random() * 1000));
???????????? } catch (InterruptedException e) {}
???????? }
???????? System.out.println("DONE! " + getName());
???? }
?}
public class TwoThreadsTest {
???? public static void main (String[] args) {
???????? new SimpleThread("Go to Beijing??").start();
???????? new SimpleThread("Stay here!!").start();
????? }
???? }
2.?編譯、運行
(二)實現Runnable接口的方法實現多線程
1.?程序功能:一個時鐘Applet,它顯示當前時間并逐秒進行更新
2.?編寫KY11_2.java 程序文件,源代碼如下。
import java.awt.*;
?import java.applet.*;
?import java.util.*;
?public class Clock extends Applet implements Runnable{
??????? Thread clockThread;
??????? public void start(){
?????????????? if(clockThread==null){
????????????????????? clockThread=new Thread(this,"Clock");
????????????????????? clockThread.start();
?????????????? }
??????? }
??????? public void run(){
?????????????? while(clockThread !=null){
????????????????????? repaint();
????????????????????? try{
???????????????????????????? clockThread.sleep(1000);
????????????????????? }catch(InterruptedException e){}
?????????????????? }
??????? }
??????? public void paint(Graphics g){
?????????????? Date now=new Date();
?????????????? g.drawString(now.getHours()+";"+now.getMinutes()+";"+now.getSeconds(),5,10);
??????? }
??????? public void stop(){
?????????????? clockThread.stop();
?????????????? clockThread=null;
??????? }
???? }
3.?編譯并運行
四、思考題
1.?簡述并區分程序、進程和線程三個概念。
2.?線程有哪幾個基本的狀態?Java中線程調度遵循何種原則?
3.?實現多線程可以用哪兩種基本方法?將這兩種方法進行比較。
JAVA線程實驗
- JAVA(102450)
相關推薦
Java多線程的用法
本文將介紹一下Java多線程的用法。 基礎介紹 什么是多線程 指的是在一個進程中同時運行多個線程,每個線程都可以獨立執行不同的任務或操作。 與單線程相比,多線程可以提高程序的并發性和響應
2023-09-30 17:07:00320
Java中的線程池包括哪些
線程池是用來統一管理線程的,在 Java 中創建和銷毀線程都是一件消耗資源的事情,線程池可以重復使用線程,不再頻繁的創建、銷毀線程。 初識 Java 中的線程池是由 juc 即
2023-10-11 15:33:54331
用戶級線程和內核級線程
級線程的創建、撤消和調度不需要OS內核的支持,是在語言(如Java)這一級處理的;而內核支持線程的創建、撤消和調度都需OS內核提供支持,而且與進程的創建、撤消和調度大體是相同的。(3)用戶線級程執行
2017-01-10 15:01:09
Java程序設計實驗指導書六個實驗詳細資料說明
AWT 及 Swing 應用開發試驗,實驗項目四 Java Applet 及多線程開發實驗,實驗項目五 Java 網絡應用程序開發試驗,實驗項目六 Java 數據庫技術開發實驗,附件 1 《Java 程序設計》課程實驗教學大綱。
2019-05-21 08:00:000
java多線程設計模式_結城浩
《JAVA多線程設計模式》通過淺顯易懂的文字與實例來介紹JAVA線程相關的設計模式概念,并且通過實際的JAVA程序范例和UML圖示來一一解說,書中有代碼的重要部分加上標注使讀者更加容
2012-01-05 16:15:5859
JAVA圖形與多媒體處理 實驗
實驗 8 圖形與多媒體處理 一、實驗目的 熟悉圖形、圖像的使用方法,理解計算機動畫的原理和 Java 的多線程處理機制,能夠編寫 Applet中使用的動畫
2008-09-23 19:03:01878
為什么Java線程沒有Running狀態?
什么是 RUNNABLE? 與傳統的ready狀態的區別 與傳統的running狀態的區別 當I/O阻塞時 如何看待RUNNABLE狀態? Java虛擬機層面所暴露給我們的狀態,與操作系統底層的線程
2021-06-17 17:36:111117
Java多線程總結之Queue
在Java多線程應用中,隊列的使用率很高,多數生產消費模型的首選數據結構就是隊列。Java提供的線程安全的Queue可以分為 阻塞隊列和非阻塞隊列 ,其中阻塞隊列的典型例子
2017-11-28 16:14:482978
Java教程之零點起飛學Java的線程資料說明
多線程編程是提高應用程序性能的重要手段之一。Java平臺從開始就被設計成為多線程環境,從語言級上支持多線程。在Java語言中,提供了創建、啟動、調度、同步等各種線程管理方法,下面會進行詳細介紹。
2019-02-20 10:41:543
java多線程編程實例 (源程序)
java多線程編程實例
import java.awt.*;import javax.swing.*;
public class CompMover extends Object { 
2008-10-22 11:48:1342
java定時器和多線程
完成一個java application應用程序,在應用程序主進程中新開一個線程,此線程進行死循環,每1秒被激活一次,激活時即在輸出顯示當前時間。
2019-06-17 14:11:262470
java線程的狀態圖和定義
立線程時由系統分配的,主要用來保存線程內部所使用的數據,如線程執行函數中所定義的變量。 注意:Java中的多線程是一種搶占機制而不是分時機制。搶占機制指的是有多個線程處于可運行狀態,但是只允許一個線程在運行,他們通過競爭的方式搶占
2017-09-27 10:44:200
Kali Linux安裝Java 安裝顯卡驅動 安裝網卡補丁 并發線程限制 電源優化
Kali Linux安裝Java 安裝顯卡驅動 安裝網卡補丁 并發線程限制 電源優化安裝Java安裝Java
2022-01-06 16:18:220
在Java中的線程狀態轉換
在 Java 中線程的生命周期中一共有 6 種狀態。New(新創建);Runnable(可運行);Blocked(被阻塞);Waiting(等待);Timed Waiting(計時等待);Terminated(被終止)。
2023-06-02 10:07:12229
Java的線程課程
線程的概念線程其實是控制線程(Thread of control)的簡寫。 控制線程就是程序運行時的路徑,是在一個程序中與其它控制線程無關的能夠獨立運行的代碼片段。 與線程有關
2009-04-10 15:58:0810
JAVA常用系統類的使用 實驗
實驗 6 常用系統類的使用 一、實驗目的 了解 Java 常用的系統類,包括 Java Applet、字符串類、輸入輸出流類、數學函數類、日期類、隨機數類以及向量類等的基
2008-09-23 19:01:541565
java流與文件實驗
實驗10 流與文件一、實驗目的 1. 理解數據流的概念2. 理解Java流的層次結構3. 理解文件的概念二、實驗要求 1. 掌握字節流
2008-09-23 19:04:081758
java線程入門教程下載
本教程有什么內容? 本教程研究了線程的基礎知識 線程是什么、線程為什么有用以及怎么開始編寫使用線程的簡單 程序。 我們還將研究更復雜的、使用線程的應用程序的基本構件 如何
2011-03-22 16:58:17402
JAVA簡單程序設計實驗
JAVA簡單程序設計實驗
一、實驗目的: 掌握下載和安裝J2SE開發工具的方法;熟悉J2SE開發工具的使用;學習編寫簡單的Java Application
2008-12-05 23:53:331560
Java線程學習基礎詳解
使用 new 關鍵字和 Thread 類或其子類建立一個線程對象后,該線程對象就處于新建狀態。它保持這個狀態直到程序 start() 這個線程。
2020-12-10 22:02:12141
java自帶的線程池方法
二、原理分析 從上面使用線程池的例子來看,最主要就是兩步,構造ThreadPoolExecutor對象,然后每來一個任務,就調用ThreadPoolExecutor對象的execute方法。 1
2017-09-27 11:06:070
Java多線程永動任務 多線程異步任務項目解讀
1. 功能說明 2. 多線程任務示例 2.1 線程池 2.2 單個任務 2.3 任務入口 2.4 結果分析 2.5 源碼地址 3. 寫在最后 大家好,今天教大家擼一個 Java 的多線程永動任務
2022-10-19 11:46:28569
Java流和文件及Applet的應用程序設計
Java流和文件及Applet的應用程序設計
一、實驗目的: 流文件的應用;掌握多線程的機制,利用多線程編程。上機練習之前,必須先完成程序的書
2008-12-05 23:56:061638
JDK 19 / Java 19正式發布 虛擬線程來了
記錄模式 (預覽版)
Linux/RISC-V 移植
外部函數和內存 API (預覽版)
虛擬線程(預覽版)
Vector API (第四次孵化)
Switch 模式匹配(第三預覽版)
結構化并發(孵化階段)
JDK 19 / Java 19 已正式發布。
2022-10-10 17:08:31887
你需要了解線程中斷以及線程中斷引發的那些問題
在我們的 Java 程序中其實有不止一條執行線程,只有當所有的線程都運行結束的時候,這個 Java 程序才算運行結束。
2019-04-24 11:44:39754
java多線程同步方法
二、為什么要線程同步 因為當我們有多個線程要同時訪問一個變量或對象時,如果這些線程中既有讀又有寫操作時,就會導致變量值或對象的狀態出現混亂,從而導致程序異常。舉個例子,如果一個銀行賬戶同時被兩個線程
2017-09-27 13:19:400
java線程內存模型
一、Java內存模型 按照官方的說法:Java 虛擬機具有一個堆,堆是運行時數據區域,所有類實例和數組的內存均從此處分配。 JVM主要管理兩種類型內存:堆和非堆,堆內存(Heap Memory)是在
2017-09-27 10:55:280
項目常見的線程池有哪些
大家好,我是小林。 今天分享一篇一位同學暑期實習面試阿里Java后端崗位的一面的面經。 主要拷打了項目+Java 集合+Java并發+網絡+mysql,一場面試大概問了 20 個題目,問的還是比較
2023-06-17 14:30:40305
如何用interrupt停止線程
對于 Java 而言,最正確的停止線程的方式是使用 interrupt。但 interrupt僅僅起到通知被停止線程的作用。而對于被停止的線程而言,它擁有完全的自主權,它既可以選擇立即停止,也可以選擇一段時間后停止,也可以選擇壓根不停止。
2022-05-04 17:18:00902
Java多線程應用程序的數據存儲庫使用改進
當執行的查詢數量很大時,數據存儲庫通常是高要求系統的瓶頸。延遲批處理執行器(DelayedBatchExecutor)是一個組件,可通過在Java多線程應用程序中對所需查詢進行批處理來減少所需查詢的數量。
2020-05-05 20:46:001566
Java中包、接口與異常處理(exception) 實驗
實驗 4 包、接口與異常處理(exception) 一、實驗目的 了解 Java 中包(package)、接口(interface)和異常處理(exception)的作用,掌握包、接口
2008-09-23 19:00:131022
一些java 多線程面試題
問題比較簡單,可以用join方法實現。 2. 在Java中Lock接口比synchronized塊的優勢是什么?你需要實現一個高效的緩存,它允許多個用戶讀,但只允許一個用戶寫,以此來保持它的完整性,你會怎樣去實現它? lock接口在多線程和并發編程中最大的優勢是它們為讀和寫分別提供了
2017-09-28 14:18:500
java內存模型詳解
Java 平臺自動集成了線程以及多處理器技術,這種集成程度比Java 以前誕生的計算機語言要厲害很多,該語言針對多種異構平臺的平臺獨立性而使用的多線程技術支持也是具有開拓性的一
2011-06-14 16:15:1939
java的線程安全、單例模式、JVM內存結構
線程安全就是多線程訪問時,采用了加鎖機制,當一個線程訪問類的某個數據時,進行保護,其他線程不能進行訪問直到該線程讀取玩,其他線程才可使用,不會出現數據不一致或者數據污染。
2018-03-12 10:30:580
Java并發編程中線程同步的常用手段synchronized用法
synchronized關鍵字是Java并發編程中線程同步的常用手段之一,其作用有三個: 互斥性:確保線程互斥的訪問同步代,鎖自動釋放,多個線程操作同個代碼塊或函數必須排隊獲得鎖, 可見性:保證共享
2021-04-04 11:30:00873
Java Thread 總結
立線程時由系統分配的,主要用來保存線程內部所使用的數據,如線程執行函數中所定義的變量。 注意:Java中的多線程是一種搶占機制而不是分時機制。搶占機制指的是有多個線程處于可運行狀態,但是只允許一個線程在運行,他們通過競爭的方式搶占
2017-09-26 17:02:150
JAVA最好的加鎖方法是什么
眾所周知,JAVA中最簡單的加鎖方法是用關鍵字synchronized,我們可以使用這個關鍵字將一個方法變成線程安全的,也可以將一個代碼塊變成線程安全的,這樣子我們不需要再擔心多線程同時執行到這段代碼會引發的并發問題。
2020-05-03 17:44:004705
關于java 3種終止正在運行線程的方法
interrupt()方法的使用效果并不像for+break語句那樣,馬上就停止循環。調用interrupt方法是在當前線程中打了一個停止標志,并不是真的停止線程。
2023-04-20 17:45:281174
實現Java多線程爬蟲的兩點
在我們調試爬蟲程序的時候,單線程爬蟲沒什么問題,但是當我們在線上環境使用單線程爬蟲程序去采集網頁時,單線程就暴露出了兩個致命的問題:
2020-05-05 21:25:001586
Java:JVM虛擬機的入門知識
Java開發現在面試越來越難了,進大廠必備的JVM、多線程高并發這都是最基礎的知識了,今天我們一起來學習Java虛擬機入門。
2020-07-01 11:43:381903
Java 8腰斬!Java 17暴漲2300%!!
因為G1通過把Java的堆分為多個大小相等的Region,可以基于這些Region進行整堆的垃圾回收,從而避免了內存碎片的產生。并且G1在回收的過程中,標記和清理的過程是并行的,可以充分利用多個CPU來縮短STW的時長,在復制的過程中是并發的,可以讓復制線程和用戶線程并發執行,不需要STW。
2023-06-08 16:51:45563
多線程細節問題學習筆記
這一次我們要說下關于final在多線程的作用,原子性的使用,死鎖以及Java中的應對方案,線程的局部變量 和 讀寫鎖的介紹 。關于final變量在多線程的使用 我們如今已經了解到,除非使用鎖或
2017-11-28 15:34:30909
圖解Java多線程中的wait()和notify()方法
wait()和notify()是Object類的方法,用于線程的等待與喚醒,必須搭配synchronized 鎖來使用。
2023-03-22 09:29:47322
Java導論教程
主要內容
2.1 Java語言的特點2.1.1 簡單的面向對象程序設計語言2.1.2 健壯安全的分布式語言2.1.3 結構中立、可移植性強的解釋型語言2.1.4 高效能2.1.5 支持多線程
2009-04-10 15:37:360
線程池的線程怎么釋放
從線程分組看,pool名開頭線程占616條,而且waiting狀態也是616條,這個點就非常可疑了,我斷定就是這個pool開頭線程池導致的問題。我們先排查為何這個線程池中會有600+的線程處于waiting狀態并且無法釋放,記接下來我們找幾條線程的堆棧觀察具體堆棧。
2023-07-31 10:49:32132
java類庫下載,java類庫大全
java類庫: Java是Sun公司推出的新型面向對象程序設計語言。它將面向對象、平臺無關性、穩固性、安全性、多線程等諸多特性集于一身,為用戶提供了一個良好的程序設計環境。
2009-04-28 14:34:04395
Java程序設計基礎
Java程序設計基礎
一、實驗目的: 通過編制一個完整的應用程序,使得學生對Java的應用程序的基本構成和開發環境有所認識,同時了解Java虛擬機的構
2008-12-05 23:53:571437
HPEC應用子程序線程推測并行性實驗分析
推測的剖析機制及核心數據結構,選取HPEC中7個具有代表性的程序,挖掘其子程序級的最大潛在并行性并結合線程粒度、并行覆蓋率、子程序調用次數、數據依賴及源碼,對程序的加速比進行分析。實驗結果表明, fdirsvd、db和ga程序的加速比在
2021-03-30 13:52:428
為什么java開發工程師薪酬那么高
Java是一種簡單的,面向對象的,分布式的,解釋型的,健壯安全的,結構中立的,可移植的,性能優異、多線程的動態語言。為什么JAVA開發工程師的待遇一直那么高呢?
2018-08-24 10:10:003399
MFC多線程及線程同步
MFC中有兩類線程,分別稱之為工作者線程和用戶界面線程。二者的主要區別在于工作者線程沒有消息循環,而用戶界面線程有自己的消息隊列和消息循環。
2022-06-01 17:03:380
單線程是否會引起 fail-fast機制
fail-fast 是什么 引用百度百科的數據: fail-fast 機制是 java 集合 (Collection) 中的一種錯誤機制。當多個線程對同一個集合的內容進行操作時,就可能會產生
2023-10-10 16:31:0584
如何正確關閉線程池
/huajiexiewenfeng/java-concurrent 本章模塊:threadpool 1.線程池示例 public class ShutDownThreadPoolDemo { private
2021-09-29 14:41:429055
核心線程數和最大線程數區別
核心線程數和最大線程數區別 核心線程數是線程池中一直存在的線程數,不會被回收。最大線程數是線程池中最多能夠存在的線程數,當任務數大于核心線程數并且任務隊列已滿時,線程池會創建新的線程來執行任務,直到
2023-06-01 09:33:353317
Java在嵌入式系統中的解決方案
Java的設計者企圖建立一個簡單的、面向對象的、智慧的、已經解譯的、強大的、安全的、架構合理的、可移植的、高性能的、多線程的、動態的語言。
2011-08-03 11:09:562382
上海達內關于java語言特點的簡單介紹
型的高級腳本語言相比,Java的確是高性能的。事實上,Java的運行速度隨著JIT(Just-In-Time)編譯器技術的發展越來越接近于C++。Java語言是多線程的:在Java語言中,線程是一種
2018-11-23 14:18:22157
Java的用戶界面
Java的用戶界面
一、實驗目的: 掌握利用Java提供的基本組件進行界面的設計;圖形用戶界面設計,熟悉相應的控件。上機練習之前,必須先完成程序
2008-12-05 23:55:272405
21天學通JAVA2_袁國忠譯
《21天學通Java2》包括4周的課程。第一周介紹Java語言的基本知識,包括數據類型、變量、表達式、對象、數組、條件語句、循環、類、接口、包異常和線程等;第二周介紹Java類庫,包括
2011-12-06 10:38:34500
多線程編程之Linux線程編程
9.2 Linux線程編程 9.2.1 線程基本編程 這里要講的線程相關操作都是用戶空間中的線程的操作。在Linux中,一般pthread線程庫是一套通用的線程庫,是由POSIX提出的,因此具有很好
2017-10-18 15:55:263
HarmonyOS JS應用開發需要關注哪些線程?官方解析來啦~
多線程特性能夠讓多任務并行執行,充分利用硬件資源開發出高性能的應用。在HarmonyOS 2上,JS目前無法像Java一樣直接創建新的Thread,那么使用JS語言開發HarmonyOS應用是否會遇到硬件
2021-09-06 15:25:081341
評論
查看更多