第二十章:多線程

進程

線程的特點

1.進程是資源分配的最小單位,線程是最小的執行單位

2.一個進程可以有多個線程

3.線程共享進程資源?

package twentyth;
?
?
public class ThreadTest extends Thread {
?? ?public void run() {
?? ??? ?for (int i = 1; i <= 10; i++) {//繼承重寫方法
?? ??? ??? ?System.out.print(i + " ");
?? ??? ?}
?? ?}
?
?? ?public static void main(String[] args) {
?? ??? ?ThreadTest t = new ThreadTest();
?? ??? ?t.start();
?? ?}
}
//例題20.1

線程的實現

package twentyth;
?
import java.awt.Container;
import javax.swing.*;
?
public class SwingAndThread extends JFrame {
?? ?int count = 0; // 圖標橫坐標
?
?? ?public SwingAndThread() {
?? ??? ?setBounds(300, 200, 250, 100); // 絕對定位窗體大小與位置
?? ??? ?Container container = getContentPane();// 主容器
?? ??? ?container.setLayout(null); // 使窗體不使用任何布局管理器
?
?? ??? ?Icon icon = new ImageIcon("src/1.gif"); // 圖標對象
?? ??? ?JLabel jl = new JLabel(icon);// 顯示圖標的標簽
?? ??? ?jl.setBounds(10, 10, 200, 50); // 設置標簽的位置與大小
?? ??? ?Thread t = new Thread() { // 定義匿名線程對象
?? ??? ??? ?public void run() {
?? ??? ??? ??? ?while (true) {
?? ??? ??? ??? ??? ?jl.setBounds(count, 10, 200, 50); // 將標簽的橫坐標用變量表示
?? ??? ??? ??? ??? ?try {
?? ??? ??? ??? ??? ??? ?Thread.sleep(500); // 使線程休眠500毫秒
?? ??? ??? ??? ??? ?} catch (InterruptedException e) {
?? ??? ??? ??? ??? ??? ?e.printStackTrace();
?? ??? ??? ??? ??? ?}
?? ??? ??? ??? ??? ?count += 4; // 使橫坐標每次增加4
?? ??? ??? ??? ??? ?if (count >= 200) {
?? ??? ??? ??? ??? ??? ?// 當圖標到達標簽的最右邊時,使其回到標簽最左邊
?? ??? ??? ??? ??? ??? ?count = 10;
?? ??? ??? ??? ??? ?}
?? ??? ??? ??? ?}
?? ??? ??? ?}
?? ??? ?};
?? ??? ?t.start(); // 啟動線程
?? ??? ?container.add(jl); // 將標簽添加到容器中
?? ??? ?setVisible(true); // 使窗體可見
?? ??? ?// 設置窗體的關閉方式
?? ??? ?setDefaultCloseOperation(EXIT_ON_CLOSE);
?? ?}
?
?? ?public static void main(String[] args) {
?? ??? ?new SwingAndThread(); // 實例化一個SwingAndThread對象
?? ?}
}

package twentyth;
?
?
import java.awt.*;
import java.util.Random;
import javax.swing.*;
?
public class SleepMethodTest extends JFrame {
?? ?private static Color[] color = { Color.BLACK, Color.BLUE, Color.CYAN, Color.GREEN, Color.ORANGE, Color.YELLOW,
?? ??? ??? ?Color.RED, Color.PINK, Color.LIGHT_GRAY }; // 定義顏色數組
?? ?private static final Random rand = new Random(); // 創建隨機對象
?
?? ?private static Color getC() { // 獲取隨機顏色值的方法
?? ??? ?return color[rand.nextInt(color.length)];
?? ?}
?
?? ?public SleepMethodTest() {
?? ??? ?Thread t = new Thread(new Runnable() { // 創建匿名線程對象
?? ??? ??? ?int x = 30; // 定義初始坐標
?? ??? ??? ?int y = 50;
?
?? ??? ??? ?public void run() {?
?? ??? ??? ??? ?while (true) { // 無限循環
?? ??? ??? ??? ??? ?try {
?? ??? ??? ??? ??? ??? ?Thread.sleep(100); // 線程休眠0.1秒
?? ??? ??? ??? ??? ?} catch (InterruptedException e) {
?? ??? ??? ??? ??? ??? ?e.printStackTrace();
?? ??? ??? ??? ??? ?}
?? ??? ??? ??? ??? ?Graphics graphics = getGraphics(); // 獲取組件繪圖上下文對象
?? ??? ??? ??? ??? ?graphics.setColor(getC()); // 設置繪圖顏色
?? ??? ??? ??? ??? ?graphics.drawLine(x, y, 100, y++); // 繪制直線并遞增垂直坐標
?? ??? ??? ??? ??? ?if (y >= 80) {
?? ??? ??? ??? ??? ??? ?y = 50;
?? ??? ??? ??? ??? ?}
?? ??? ??? ??? ?}
?? ??? ??? ?}
?? ??? ?});
?? ??? ?t.start(); // 啟動線程
?? ?}
?
?? ?public static void main(String[] args) {
?? ??? ?init(new SleepMethodTest(), 100, 100);
?? ?}
?
?? ?public static void init(JFrame frame, int width, int height) { // 初始化程序界面的方法
?? ??? ?frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
?? ??? ?frame.setSize(width, height);
?? ??? ?frame.setVisible(true);
?? ?}
}
//20.3


?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/160469.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/160469.shtml
英文地址,請注明出處:http://en.pswp.cn/news/160469.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Unity開發之C#基礎-File文件讀取

前言 今天我們將要講解到c#中 對于文件的讀寫是怎樣的 那么沒接觸過特別系統編程小伙伴們應該會有一個疑問 這跟文件有什么關系呢&#xff1f; 我們這樣來理解 首先 大家對電腦或多或少都應該有不少的了解吧 那么我們這些軟件 都是通過變成一個一個文件保存在電腦中 我們才可以…

【2023C卷最新題目】20天拿下華為OD筆試之【貪心】2023C-找座位/2023B-座位調整-全網注釋最詳細分類最全的華為OD真題題解

文章目錄 題目描述與示例題目描述輸入輸出說明示例一輸入輸出 示例二輸入輸出說明 解題思路代碼PythonJavaC時空復雜度 相同問題不同描述2023C-找座位題目描述輸入描述輸出描述示例一輸入輸出 示例二輸入輸出 華為OD算法/大廠面試高頻題算法練習沖刺訓練 題目描述與示例 題目描…

Spring Boot創建和使用(重要)

Spring的誕生是為了簡化Java程序開發的&#xff01; Spring Boot的誕生是為了簡化Spring程序開發的&#xff01; Spring Boot就是Spring框架的腳手架&#xff0c;為了快速開發Spring框架而誕生的&#xff01;&#xff01; Spring Boot的優點&#xff1a; 快速集成框架&#x…

2023年G2電站鍋爐司爐證考試題庫及G2電站鍋爐司爐試題解析

題庫來源&#xff1a;安全生產模擬考試一點通公眾號小程序 2023年G2電站鍋爐司爐證考試題庫及G2電站鍋爐司爐試題解析是安全生產模擬考試一點通結合&#xff08;安監局&#xff09;特種作業人員操作證考試大綱和&#xff08;質檢局&#xff09;特種設備作業人員上崗證考試大綱…

MySQL 事務的底層原理和 MVCC(一)

在事務的實現機制上&#xff0c;MySQL 采用的是 WAL&#xff08;Write-ahead logging&#xff0c;預寫式日志&#xff09;機制來實現的。 在使用 WAL 的系統中&#xff0c;所有的修改都先被寫入到日志中&#xff0c;然后再被應用到系統中。通常包含 redo 和 undo 兩部分信息。 …

【Java開發】 Springboot集成Mybatis-Flex

1 Mybatis-Flex 介紹 1.1簡介 Mybatis-Flex 是一個優雅的 Mybatis 增強框架&#xff0c;它非常輕量、同時擁有極高的性能與靈活性。我們可以輕松的使用 Mybaits-Flex 鏈接任何數據庫&#xff0c;其內置的 QueryWrapper 亮點幫助我們極大的減少了 SQL 編寫的工作的同時&#xff…

cocos2dx ??Animate3D(二)

Twirl 扭曲旋轉特效 // 持續時間(時間過后不會回到原來的樣子) // 整個屏幕被分成幾行幾列 // 扭曲中心位置 // 扭曲的數量 // 振幅 static Twirl* create(float duration, const Size& gridSize, const Vec2& position, unsigned int twirls, float amplitude)…

編程語言發展史:C語言的誕生及其影響

預計更新 第一部分&#xff1a;早期編程語言 1.1布爾代數和機器語言 1.2匯編語言的出現和發展 1.3高級語言的興起 第二部分&#xff1a;主流編程語言 1.1 C語言的誕生及其影響 1.2 C語言的發展和應用 1.3 Java語言的出現和發展 1.4 Python語言的興起和特點 1.5 JavaScript語言…

基于springboot實現攝影跟拍預定管理系統【項目源碼+論文說明】計算機畢業設計

基于springboot實現攝影跟拍預定管理系統演示 摘要 首先,論文一開始便是清楚的論述了系統的研究內容。其次,剖析系統需求分析,弄明白“做什么”,分析包括業務分析和業務流程的分析以及用例分析,更進一步明確系統的需求。然后在明白了系統的需求基礎上需要進一步地設計系統,主要…

【2018年數據結構真題】

方法一 給定一個含n(n>1)個整數的數組&#xff0c;請設計一個在時間上盡可能高效的算法&#xff0c;找出數組中未出現的最小正整數。例如&#xff0c;數組{-5&#xff0c;3&#xff0c;2&#xff0c;3}中未出現的最小正整數是1&#xff1b;數組{1&#xff0c;2&#xff0c;…

AIGC變革BI行業,永洪發布vividime全球化品牌

大數據產業創新服務媒體 ——聚焦數據 改變商業 國內BI商業智能市場&#xff0c;一直有著“內永洪&#xff0c;外Tableau”的說法。成立于2012年的永洪科技經過十多年的發展&#xff0c;早已崛起為國內大數據行業的一支勁旅。 ChatGPT火爆出圈之后&#xff0c;AIGC快速滲透&am…

每日一練 | 華為認證真題練習Day19

Day19 華為認證中級考試真題 1、DHCP協議運行過程中&#xff0c;客戶端從申請到IP地址時的流程是 A.1-2-3-4 B.1-4-3-2 C.3-2-1-4 D.3-4-1-2 2、VRRP報文的IP協議號是&#xff1a; A.112 B.114 C.116 D.118 3、MPLS的標簽字段共有多少bit? A.8 B.3 C.1 D.20 4…

【C++】vector的介紹與使用

&#x1f9d1;?&#x1f393;個人主頁&#xff1a;簡 料 &#x1f3c6;所屬專欄&#xff1a;C &#x1f3c6;個人社區&#xff1a;越努力越幸運社區 &#x1f3c6;簡 介&#xff1a;簡料簡料&#xff0c;簡單有料~在校大學生一枚&#xff0c;專注C/C/GO的干貨分…

2020年下半年試題一:論信息系統項目的成本管理

論文題目 1.概要敘述你參與過的信息系統項目&#xff08;項目的背景、項目規模、發起單位、目的、項目內容、組織結構、項目周期、交付的成果等&#xff09;&#xff0c;并說明你在其中承擔的工作&#xff08;項目背景要求本人真實經歷&#xff0c;不得抄襲及杜撰&#xff09;。…

編程語言發展史:匯編語言的出現和發展

一、匯編語言的出現 隨著計算機硬件的發展&#xff0c;機器語言變得越來越復雜&#xff0c;難以被人類程序員理解和編寫。因此&#xff0c;出現了更高級別的編程語言&#xff0c;這些語言使用類似英語的語法&#xff0c;使程序員能夠更容易地編寫和維護程序。 其中一種高級語…

web網頁滲透測試

web網頁滲透測試 流程 信息收集網站掃描訪問控制測試漏洞掃描嘗試注入攻擊驗證漏洞后滲透測試滲透測試報告 信息收集 收集目標網站的基本信息&#xff0c;包括域名、IP 地址、子域名等。使用 WHOIS 查詢、搜索引擎、子域名枚舉工具等進行信息收集。 網站掃描 使用端口掃描…

【Java 進階篇】Redis 數據結構:輕松駕馭多樣性

引言 Redis是一款強大的鍵值對存儲系統&#xff0c;其數據結構的多樣性是其引以為傲的特點之一。在這篇博客中&#xff0c;我們將深入探討Redis的主要數據結構&#xff0c;包括字符串、哈希表、列表、集合和有序集合&#xff0c;并通過實例代碼演示它們的用法。 1. 字符串&am…

在中國企業出海的大浪潮下,亞馬遜云科技提供遍及全球的基礎設施和技術支持

中國技術出海是中國企業更高層次更高質量的全球化。在人類文明發展史上&#xff0c;凝聚中國古人智慧結晶的造紙術、印刷術、火藥、指南針等&#xff0c;曾為中國技術出海寫下過濃墨重彩的一筆。在今天&#xff0c;如金山辦公、店匠科技、ADVANCE.AI等公司又以技術立業&#xf…

msvcp140.dll是什么?msvcp140.dll丟失的有哪些解決方法

在計算機使用過程中&#xff0c;我們經常會遇到一些錯誤提示&#xff0c;其中之一就是“msvcp140.dll丟失”。這個錯誤通常會導致某些應用程序無法正常運行。為了解決這個問題&#xff0c;我們需要采取一些措施來修復丟失的msvcp140.dll文件。本文將詳細介紹5個解決msvcp140.dl…

Day27|Leetcode 39. 組合總和 Leetcode 40. 組合總和 II Leetcode131. 分割回文串

Leetcode 39. 組合總和 題目鏈接 39 組合總和 本題目和前面的組合問題差不多&#xff0c;只不過這里能重復選取數字&#xff0c;還是要注意組合的定義&#xff0c;交換數字順序還是算一個組合&#xff0c;所以這里還是用我們的startIndex來記錄取的數字到哪里了&#xff0c;下…