java 進階 1.0.3

Thread API說明
自己滾去看文檔
CPU線程調度
每一個線程的優先使用權都是系統隨機分配的,人人平等
誰先分配到就誰先用
也可以耍賴,就是賦予某一個線程擁有之高使用權:優先級
這樣的操作就叫做線程調度
最基本的是系統輪流獲得
java的做法是搶占CPU資源
優先級在java中是1-10,數字最大優先級越高
main()也是一個線程,被叫做主線程,他的值是5
main是優先執行的main,就是好像把別人的值設置的很大的時候也是先跑的main
但是有時候會發現自己設置的好像不管用,這是因為這里優先級的設置需要操作系統的支持,系統不一樣有可能導致不準,因為執行的很快
所以以后在做多線程的時候,不要依賴多線程調度,除非是你這個線程執行的時間很長的時候,這個時候才能體會出一點多線程調度的樣子,因為CPU執行的非常快,雖然你把優先級分好了,但是好像沒啥卵用

public class Demo {public static void main(String[] args) {Thread maxPriority = new Thread(new MAXPriority(), "maxPriority");Thread minPriority = new Thread(new MINPriority(), "minPriority");maxPriority.setPriority(Thread.MIN_PRIORITY);minPriority.setPriority(Thread.MAX_PRIORITY);maxPriority.start();minPriority.start();}
}

運行結果確實沒啥卵用


線程插隊

public class Demo {public static void main(String[] args) {Thread thread_join = new Thread(new MAXPriority(), "MAXPriority");thread_join.start();for (int i = 0; i < 10; i++) {System.out.println(Thread.currentThread().getName());if (i == 3) {try {thread_join.join();} catch (InterruptedException e) {e.printStackTrace();}}}}
}

在這里插入圖片描述
使用join可以實現無恥的插隊
線程休眠

try {Thread.sleep(300);} catch (InterruptedException e) {e.printStackTrace();}

線程休眠, 讓線程先睡一會再說
線程讓步
有一種搶地主的感覺,說啥呢,這叫孔融讓梨

public class MAXPriority implements Runnable {@Overridepublic void run() {for (int i = 0; i < 10; i++) {if (i == 5) {Thread.yield();System.out.println(Thread.currentThread().getName() + "現在開始線程讓步");}System.out.println(Thread.currentThread().getName());}}
}

在這里插入圖片描述
可以看到1執行了5次之后就開始執行2
打印沒有讓步快
因為線程太快了
線程狀態還是斗地主吧
線程狀態
New新建 -----> new Thread
Runbale可運行 --------> .start
Blocked阻塞
Waiting 等待
Timed waiting計時等待
Terminated終止

在這里插入圖片描述
線程通信
線程調度高度依賴于操作系統
在這里插入圖片描述
在任務管理器中可以設置進程的優先級
在線程調度中,一個線程結束之后需要通知另外兩個線程,來告訴他我結束了,你上吧
有一個等待喚醒機制
無非就是誰等待誰被喚醒

package com.google.dome;public class Condom {public boolean isStatus = false;
}
package com.google.dome;public class Customer extends Thread {private Condom condom;public Customer(Condom condom) {this.condom = condom;}@Overridepublic void run() {while (true) {synchronized (condom) {// 是否擁有庫存,如果沒有就打電話給廠商,我們等if (condom.isStatus == false) {try {condom.wait();} catch (InterruptedException e) {e.printStackTrace();}System.out.println(Thread.currentThread().getName() + "我買完了快點生產");}condom.isStatus = false;System.out.println(Thread.currentThread().getName() + "我買完了,你快點生產,我通知你了");condom.notify();}}}
}
package com.google.dome;public class Producer extends Thread {private Condom condom;public Producer(Condom condom) {this.condom = condom;}@Overridepublic void run() {while (true) {// 對商家來說是是否有貨,如果有貨的話就等著synchronized (condom) {if (condom.isStatus == true) {try {condom.wait();} catch (InterruptedException e) {e.printStackTrace();}}condom.isStatus = true;System.out.println(Thread.currentThread().getName() + "我生產完了,你快點買,我通知你了");condom.notify();}}}
}

使用condom.wait進行線程等待并且condom.notify通知其他的線程
在這里插入圖片描述
在這里插入圖片描述
鎖的對象為什么能使用.wait.notify呢?好奇怪
如果有多個線程的話,就可以喚醒所有的線程.notifyAll
frank竟然不打算往下講, 這些就屬于是并發編程的事了
說是什么點到為止
進程
java中提供了方法去操作進程,了解一下就行
這個已經涉及到很底層的東西,frank說不能再講了,因為就越來越復雜了,現在的知識點還是有限的
這樣做就需要用到泛型編程,這個泛型編程到底是個啥東西
大公司的并發操作有時候使用的是go
對于新手而言已經是超乎極限了
有一本書叫做java并發編程的藝術
java核心技術
你要是會這個肯定是優勢,但是實習生不怎么要求這個
但是牛逼的實習生肯定得會
得寫框架,寫好算法就是基礎任務
想進大廠就得多會一點
現在不要把這個放在重點上面,否則的話肯定會浪費很多時間
不要把時間浪費在無關的事情上面






micro_frank

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

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

相關文章

匯川EasyPLC MODBUS-RTU通信配置和編程實現

累積流量計算(MODBUS RTU通信數據處理)數據處理相關內容。 累積流量計算(MODBUS RTU通信數據處理)_流量積算儀modbus rtu通訊-CSDN博客文章瀏覽閱讀219次。1、常用通信數據處理MODBUS通信系列之數據處理_modbus模擬的數據變化后會在原來的基礎上累加是為什么-CSDN博客MODBUS通…

【機械視覺】Halcon—【二、Halcon算子全面介紹(超詳細版)】

介紹 Halcon 的算子&#xff08;operators&#xff09;按照功能被系統性地劃分為多個類別&#xff0c;官方文檔中目前&#xff08;Halcon 22.11 版本&#xff09;共有 19 個主分類&#xff0c;每個主分類下還有若干子分類。 本人在此對這19個分類的常用核心算子進行了一系列的…

Https流式輸出一次輸出一大段,一卡一卡的-解決方案

【背景】 最近遇到一個奇怪的現象&#xff0c;前端vue&#xff0c;后端python&#xff0c;服務部署在服務器上面后&#xff0c;本來一切正常&#xff0c;但公司說要使用https訪問&#xff0c;想著也沒什么問題&#xff0c;切過去發現在沒有更改任何代碼的情況下&#xff0c;ht…

Vue常用自定義指令-積累的魅力【VUE】

前言 在【自定義指令—v2與v3之間的區別【VUE基礎】一文中&#xff0c;整理了自定義指令部分vue2和vue3 兩個版本的區別&#xff0c;有興趣的伙伴或者針對自定義部分比較迷茫的伙伴可以跳轉看一下。此次主要介紹一些自己積累的一些自定義指令的代碼&#xff0c;與大家一起分享。…

【mysql】mysql的高級函數、高級用法

mysql是最常用的數據庫之一&#xff0c;常見的函數用法大家應該都很熟悉&#xff0c;本文主要例舉一些相對出現頻率比較少的高級用法 (注&#xff1a;需注意mysql版本&#xff0c;大部分高級特性都是mysql8才有的) 多值索引與虛擬列 主要是解決字符串索引問題&#xff0c;光說…

C#日期和時間:DateTime轉字符串全面指南

C#日期和時間&#xff1a;DateTime轉字符串全面指南 在 C# 開發中&#xff0c;DateTime類型的時間格式化是高頻操作場景。無論是日志記錄、數據持久化&#xff0c;還是接口數據交互&#xff0c;合理的時間字符串格式都能顯著提升系統的可讀性和兼容性。本文將通過 20 實戰示例…

Canvas設計圖片編輯器全講解(一)Canvas基礎(萬字圖文講解)

一、前序 近兩年AI發展太過迅速&#xff0c;各類AI產品層出不窮&#xff0c;AI繪圖/AI工作流/AI視頻等平臺的蓬勃發展&#xff0c;促使圖片/視頻等復雜內容的創作更加簡單&#xff0c;讓更多普通人有了圖片和視頻創作的機會。另一方面用戶內容消費也逐漸向圖片和視頻傾斜。在“…

Javase易混點專項復習02_static關鍵字

1. static關鍵字1.1概述1.2修飾一個成員變量例&#xff1a;1.2.1靜態屬性與非靜態屬性示例及內存圖對比 1.3修飾一個方法&#xff08;靜態方法&#xff09;1.4.static修飾成員的訪問特點總結1.5動態代碼塊和靜態代碼塊1.5.1動態代碼塊1.5.2 靜態代碼塊 1.6帶有繼承的對象創建過…

C++滑動門問題(附兩種方法)

題目如下&#xff1a; 滑動窗口 - 題目 - Liusers OJ ——引用自OJ網站 方法如下&#xff1a; 1.常規思想 #include<bits/stdc.h> using namespace std; int main() {int n,k;int a[110];cin>>n>>k;for(int i0;i<n;i){cin>>a[i];}for(int i0;i…

mysql連接池druid監控配置

文章目錄 前置依賴啟用配置訪問監控一些問題 前置 連接池有很多類型&#xff0c;比如 c3p0&#xff0c;比如 hikariCP&#xff0c;比如 druid。c3p0 一些歷史項目可能用的比較多&#xff0c;hikariCP 需要高性能的項目比較多&#xff0c;druid 性能也很好&#xff0c;而且還提…

Jetson系統燒錄與環境配置全流程詳解(含驅動、GCC、.Net設置)

Jetson系統燒錄與環境配置全流程詳解&#xff08;含驅動、GCC、.Net設置&#xff09; 目錄1. 準備工作與工具安裝1.1 主機系統要求1.2 安裝 SDK Manager 2. JetPack 系統燒錄流程2.1 Jetson 進入恢復模式2.2 使用 SDK Manager 燒錄 JetPack 3. Jetson 系統基礎設置4. 配置 .Net…

分布式緩存:緩存的三種讀寫模式及分類

文章目錄 緩存全景圖Pre緩存讀寫模式概述1. Cache Aside&#xff08;旁路緩存&#xff09;工作流程優缺點 2. Read/Write Through&#xff08;讀寫穿透&#xff09;工作流程優缺點典型場景 3. Write Behind Caching&#xff08;異步寫回&#xff09;工作流程優缺點典型場景 緩存…

Ntfs!FindFirstIndexEntry函數中ReadIndexBuffer函數的作用是新建一個Ntfs!_INDEX_LOOKUP_STACK結構

第一部分&#xff1a; 0: kd> kc # 00 Ntfs!FindFirstIndexEntry 01 Ntfs!NtfsRestartIndexEnumeration 02 Ntfs!NtfsQueryDirectory 03 Ntfs!NtfsCommonDirectoryControl 04 Ntfs!NtfsFsdDirectoryControl 05 nt!IofCallDriver 06 nt!IopSynchronousServiceTail 07 nt!Nt…

5.24 note

笛卡爾積(?選擇條件 select a.student_name as member_A, b.student_name as member_B, c.student_name as member_C from schoola as a join schoolb as b join schoolc as c where a.student_name ! b.student_name and a.student_name !…

為什么需要在循環里fetch?

假設有多個設備連接在后端,數量不定,需要按個讀回狀態,那么就要在循環里fetch了. 此函數非常好用,來自于國內一個作者,時間久了,忘記了來源,抱歉. export default async function fetchWithTimeout(resource, options {}) {const { timeout 1000 } options;const controll…

不同凈化技術(靜電 / UV / 濕式)的性能對比研究

在餐飲油煙和工業廢氣治理領域&#xff0c;油煙凈化技術的選擇至關重要。目前&#xff0c;靜電、UV 光解、濕式洗滌是市場上應用較為廣泛的三種凈化技術。它們憑借不同的工作原理和技術特性&#xff0c;在凈化效率、能耗、適用場景等方面展現出各自的優勢與局限。本文將從多個維…

Ubuntu 22.04上升級npm版本

如果使用NVM安裝Node.js npm會自動包含&#xff0c;但版本可能不是最新的。你可以選擇升級&#xff1a; # 檢查當前版本 npm --version# 升級到最新版本 npm install -g npmlatest# 或者升級到特定版本 npm install -g npm9.8.1如果使用其他方法安裝Node.js 通常Node.js安裝…

項目管理進階:111頁 詳解華為業務變革框架及戰略級項目管理【附全文閱讀】

BTMS 是一套集成管理系統框架&#xff0c;涵蓋變革規劃、項目執行、實施及生命周期管理等多個關鍵環節。在規劃階段&#xff0c;通過全面收集需求、深入分析現狀&#xff0c;制定出符合業務戰略的年度規劃&#xff0c;明確變革舉措和項目清單。 解決方案開發的 PMOP 流程&#…

java基礎知識回顧1(可用于Java基礎速通)考前,面試前均可用!

目錄 一、初識java 二、基礎語法 1.字面量 2.變量 3.關鍵字 4.標識符 聲明&#xff1a;本文章根據黑馬程序員b站教學視頻做的筆記&#xff0c;可對應課程聽&#xff0c;課程鏈接如下: 02、Java入門&#xff1a;初識Java_嗶哩嗶哩_bilibili 一、初識java Java是美國 sun 公…

Linux下MySQL的安裝與使用

1 安裝前說明 1.1 Linux系統及工具的準備 安裝并啟動好兩臺虛擬機&#xff1a;CentOS 7 掌握克隆虛擬機的操作 mac地址主機名ip地址UUID 安裝有 Xshell 和 Xftp 等訪問 CentOS 系統的工具 CentOS6 和 CentOS7 在 MySQL 的使用中的區別 防火墻&#xff1a;6是iptables&am…