java基礎-Thread執行緒
一
* 第一種建立執行緒的方式
* 繼承Thread類,重寫run方法
二public class ThreadDemo3 { public static void main(String[] args){ //1 Thread t1 = new Thread(){ public void run(){ for(int i=0;i<1000;i++){ System.out.println("你是誰啊"); } } }; //2 Runnable runn = new Runnable(){ public void run(){ for(int i=0;i<1000;i++){ System.out.println("我是查水錶的"); } } }; Thread t2 = new Thread(runn); t1.start(); t2.start(); } }
* 第二種建立執行緒的方式
* 定義執行緒體Runnable
public class ThreadDemo2 { public static void main(String []args){ Runnable runn1 = new MyRunnable1(); Runnable runn2 = new MyRunnable2(); Thread t1 = new Thread(runn1); Thread t2 = new Thread(runn2); t1.start(); t2.start(); } } class MyRunnable1 implements Runnable{ public void run(){ for(int i=0;i<1000;i++){ System.out.println("你是誰啊"); } } } class MyRunnable2 implements Runnable{ public void run(){ for(int i=0;i<1000;i++){ System.out.println("我是修水管的"); } } }
三
常用API
四
執行緒同步
五
執行緒協同工作
synchronized關鍵字
六
執行緒協同工作例子
比如我們有兩個執行緒,一個是下載圖片的執行緒,一個是顯示圖片的執行緒
顯示圖片的執行緒必須等待下載圖片的執行緒執行完成後才能執行
public class ThreadDemo10 { public static boolean isFinish; public static Object obj = new Object(); public static void main(String[] args){ //下載執行緒 final Thread download = new Thread(){ public void run(){ System.out.println("down:開始下載圖片.."); for(int i=1;i<=100;i++){ System.out.println( "down:已完成"+i+"%"); try { Thread.sleep(50); } catch (InterruptedException e) { } } System.out.println("down:圖片下載完畢"); isFinish = true; /* * 當圖片下載完畢,就應當通知顯示圖片的 * 執行緒開始工作了 */ synchronized(obj){ obj.notify(); } System.out.println("down:開始下載附件.."); for(int i=1;i<=100;i++){ System.out.println( "down:已完成"+i+"%"); try { Thread.sleep(50); } catch (InterruptedException e) { } } System.out.println("down:附件下載完畢"); } }; Thread show = new Thread(){ public void run(){ System.out.println("show:開始顯示圖片.."); //這裡應當等待下載執行緒將圖片下載完畢 try { // download.join(); //在obj物件上等待 synchronized(obj){ obj.wait(); } } catch (InterruptedException e) { } if(!isFinish){ throw new RuntimeException( "圖片沒有找到"); } System.out.println( "show:顯示圖片完畢.."); } }; download.start(); show.start(); } }
七
執行緒池
ExecutorService關鍵字
/**
* 執行緒池
* 用於重用執行緒以及控制執行緒數量
*
*
*/
public class ThreadPoolDemo {
public static void main(String[] args){
ExecutorService threadPool
= Executors
.newFixedThreadPool(2);
for(int i=0;i<5;i++){
Runnable runn
= new Runnable(){
public void run(){
for(int i=0;i<5;i++){
System.out.println(i);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
};
threadPool.execute(runn);
}
}
}
相關推薦
java基礎-Thread執行緒
一 * 第一種建立執行緒的方式 * 繼承Thread類,重寫run方法 public class ThreadDemo3 { public static void main(String[] args){ //1 Thread t1 = new Threa
20 Java基礎筆記-執行緒
執行緒 一,程式,程序,執行緒 1,程式:指令集,靜態概念 2,程序:作業系統,排程程式,動態概念 3,執行緒:在程序內的多條執行路徑,多執行緒併發執行可以提高程式效率。 二,多執行緒並行與併發 並行:兩個任務同時執行(需要多核CPU)。 併發:兩個任務都請求執行,處理器安
Java基礎之執行緒池
一、執行緒池概念 執行緒池:其實就是一個容納多個執行緒的容器,其中的執行緒可以反覆使用,省去了頻繁建立執行緒物件的操作,無需反覆建立執行緒而消耗過多資源。 二、工作原理 三、合理利用執行緒池的好處 降低資源消耗。減少了建立和銷燬執行緒的次數,每個工作執行緒都可以
Java基礎多執行緒之執行緒安全-同步鎖三種形式
首先,我們通過一個案例,演示執行緒的安全問題: 電影院要賣票,我們模擬電影院的賣票過程。假設要播放的電影是 “葫蘆娃大戰奧特曼”,本次電影的座位共100個(本場電影只能賣100張票)。我們來模擬電影院的售票視窗,實現多個視窗同時賣 “終結者”這場電影票(多個視窗一起賣這100張票)需要視窗
Java基礎-建立執行緒的三種方法
1.繼承Thread類 1)定義Thread類的子類,並重寫run方法,run方法就是執行緒要執行的任務,將其稱為執行體。 2)建立Thread類子類的物件,即建立了執行緒物件。 3)呼叫執行緒物件的start()方法來啟動該執行緒。 此方法需要覆蓋掉其中的run()方法。 1 public
Java基礎之執行緒
程序與執行緒 程序:程序是指記憶體中執行得一個程式,每個程序都有一個獨立的記憶體空間,一個應用程式可以同時執行多個程序;程序是程式執行的一次過程,是系統執行程式的基本單位。 執行緒:程序內部以個單獨的獨立執行單元,一個程序可以包含多個執行緒。 程序與執行緒的區別: 程序:有獨立的儲存空間,程序
java基礎多執行緒(4)—執行緒可見性volatile 執行緒封閉threadlocal CAS操作
一。執行緒的可見性volatile(不是太常用,因為他只能解決執行緒可見和阻止指令排序,並不能解決多執行緒的併發問題) volatile:(1)保證變數的修改讓所有執行緒可見 (2)阻止指令排序 這個程式有3個結果,0,42,沒有進入迴圈直接結束
java基礎——守護執行緒
守護執行緒 1.守護執行緒和非守護執行緒(使用者執行緒) Java分為兩種執行緒:使用者執行緒和守護執行緒。守護執行緒 是指在程式執行的時候在後臺提供一種通用服務的執行緒,比如垃圾回收執行緒就是一個很稱職的守護者,並且這種執行緒並不屬於程式中不可或缺的部分。因此,當所有的非守護執行緒
java基礎——實現執行緒序列執行
為了控制執行緒執行的順序,如ThreadA->ThreadB->ThreadC->ThreadA迴圈執行三個執行緒,我們需要確定喚醒、等待的順序。這時我們可以同時使用 Obj.wait()、Obj.notify()與synchronized(Obj)來
【Java基礎】執行緒和併發機制
前言 在Java中,執行緒是一個很關鍵的名詞,也是很高頻使用的一種資源。那麼它的概念是什麼呢,是如何定義的,用法又有哪些呢?為何說Android裡只有一個主執行緒呢,什麼是工作執行緒呢。執行緒又存在併發,併發機制的原理是什麼。這些內容有些瞭解,有些又不是很清楚,所以有必要通過一篇文章的梳理,弄清
Java基礎之執行緒那些事
回顧 我們在前幾篇講解了java集合的相關知識 Java 集合概述 Java 集合之ArrayList Java 集合之LinkedList Java集合之HashMap 本章開始主要介紹下多執行緒程式設計,集合的其他實現,後續會陸續放出 從CPU說起 上圖取
java基礎---------多執行緒與反射
第一部分多執行緒: java語言是為數不多的支援多執行緒的語言。 程序:當程式進入記憶體執行時,即變成了一個程序。程序是處於執行過程中的程式,並且具有一定的獨立功能,程序是系統進行資源分配和排程的一個獨立單位。 硬碟和記憶體都可以儲存資料。硬碟是持久儲存裝置,記憶體是臨時
java基礎--多執行緒
java多執行緒的應用非常廣泛,主要是為了發揮伺服器多處理器的效率。在我們的web程式設計中應用非常廣泛。允許多使用者併發同時訪問,同時下載多個圖片等等均是應用了多執行緒。但在程式設計的時候好像關於多執行緒的程式碼感覺不到是因為我們將多執行緒繼承到框架裡面了,S
Java基礎-多執行緒
class Res { String name; String sex; Boolean flag =false; // private String name; // private String sex; // private Boolean flag =false; // public sync
Java基礎——多執行緒
Java基礎-多執行緒 多個執行緒一起做同一件事情,縮短時間,提升效率 提高資源利用率 加快程式響應,提升使用者體驗 建立執行緒 1. 繼承Thread類 步驟 繼承Thread類,重寫run方法 呼叫的時候,直接new一個物件,然後調start()方法啟動執行緒 特點 由於是繼承方式,所以不建
Java 實現多執行緒Thread Runnable Callable 三種方式
Java 多執行緒 java 實現 多執行緒 三種方法 1. 繼承Thread重寫 run方法。 2.實現Runnable的run方法。無返回值。一個類可以實現多個介面。 3.實現Callable的call方法。有返回值,可以丟擲執行緒錯誤。一個類可以實現多個介面。 public class
Java:多執行緒基礎
Java中的多執行緒 程序:一個程式的執行 執行緒:程式中某個順序的流程控制,通俗來講,就是不同的任務 一個程序可以有多個執行緒 執行緒的分類 普通執行緒(非Daemon執行緒) 在Java中,如果還有非Daemon執行緒,整個程式就不會結束 Daemon
java 併發(三)---Thread 執行緒
Thread 的狀態 執行緒共有五種狀態.分別是: (1)新建 (2)就緒 (3)執行 (4)阻塞 (5)死亡 ,下面列列舉的狀態需要結合狀態示意圖更好理解. 新建狀態(New): 新建立了一個執行緒物件。 就緒狀態
Java中的執行緒Thread方法之---suspend()和resume()
案例一:(通過打斷點除錯) package com.threadstop.demo; import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; import java.u
Java多執行緒基礎之執行緒特性
核心知識: ① 使用多執行緒技術時,程式碼的執行結果與程式碼執行的順序或呼叫順序是無關的 public class MyThread extends Thread{ @Override public void run() { super.run(); System.o