java 多執行緒 資料流 內部類(播放音樂)
一.多執行緒
1.程序與執行緒
程序:負責資源管理(記憶體)
執行緒:負責的程式的執行
2.類實現
a、定義一個類,繼承Thread
b、重寫Run方法
c、啟動執行緒(執行緒物件.start() )
3.介面實現
a、定義一個類,實現Runnable介面
b、造一個執行緒物件,傳入介面物件
c、啟動執行緒(執行緒物件.start())
4.執行緒的同步
synchronized
a、同步方法
b、同步資源
5.資料流
A:分類
a、方向:輸入流,輸出流 InputStream OutputStream
b、位元組:位元組流,字元流 Reader Writer
c、功能:實體流,操作流
操作流:
a、BufferedInputStream,BufferedOutputStream 緩衝包裝
b、DataInputStream,DataOutputStream 資料型別包裝
c、ObjectInputStream,ObjectOutputStream 物件包裝
B:設計模式
裝修模式--Decorator
C:序列化
1. implements Serializable 介面
2.序列化資料型別
a、基本型
b、String
c、物件(可序列化)
d、集合(放前面的)
1、資料夾操作
a.建立目錄包括上級目錄資料夾
public static void main(String[] args) {
File dir=new File("d:/abc");
String[] files=dir.list();
}
private static void t1() {
//檔案資訊描述
File file=new File("d:/abc/cang");
if (file.exists()) {
System.out.println("有了");
file.delete();
}else {
System.out.println("還沒有");
//建立目錄 包括上級目錄--上級路徑不存在就不工作了
file.mkdirs();
}
}
}
b.建立檔案
public static void main(String[] args) throws Exception {
File file = new File("d:/abc", "你好.avi");
if (file.exists()) {
System.out.println("你好被幹掉了");
file.delete();
} else {
file.createNewFile();
System.out.println("你好出來了");
}
}
2、檔案操作
a.讀取
private static String file = "d:/accounts.xml";
public static void main(String[] args) throws Exception {
// 檔案輸入流
InputStream is = new FileInputStream(file);
// XML讀取流
SAXReader reader = new SAXReader();
Document doc = reader.read(is);
// 獲得根元素
Element root = doc.getRootElement();
// 獲得所有的兒子元素elements
List<Element> elements = root.elements();
for (Element e : elements) {
System.out.println("id:" + e.attributeValue("id"));
System.out.println("name:" + e.elementText("name"));
System.out.println("pass:" + e.elementText("pass"));
System.out.println("money:" + e.elementText("money"));
System.out.println("------------------------");
}
}
b.寫入
private static String file = "d:/accounts.xml";
public static void main(String[] args) throws Exception {
// 1.建立XML文件物件
Document doc = DocumentHelper.createDocument();
// 2.加入根元素節點addElement
Element root = doc.addElement("accounts");
// 3.加入一個account
Element account = root.addElement("account");
// 屬性節點addAttribute
account.addAttribute("id", "0001");
// 文字節點addText
account.addElement("name").addText("tom");
account.addElement("pass").addText("<b>123</b>");
account.addElement("money").addText("1000");
// 4.再加入一個account
account = root.addElement("account");
account.addAttribute("id", "0002");
account.addElement("name").addText("mary");
account.addElement("pass").addText("234");
account.addElement("money").addText("2000");
// 儲存文件
save(doc);
System.out.println("game over");
}
private static void save(Document doc) throws Exception {
// 檔案實體流--字元流
FileWriter fileWriter = new FileWriter(file);
// 輸出格式化
OutputFormat of = OutputFormat.createPrettyPrint();
// 包裝流--處理流
XMLWriter xmlWriter = new XMLWriter(fileWriter, of);
// 輸出文件物件
xmlWriter.write(doc);
// 關閉資源
xmlWriter.close();
}
3、目錄列表-遞迴 (舉例列印某個盤的檔案)
public static void main(String[] args) {
File file = new File("c:/");
listfiles(file);
}
private static void listfiles(File file) {
// 列印路徑
System.out.println(file.getAbsolutePath());
try {
// 如果是資料夾 列印所以檔案
if (file.isDirectory()) {
File[] files = file.listFiles();
for (File f : files) {
if (f.isFile()) {
System.out.println(f.getAbsolutePath());
} else if (f.isDirectory()) {
listfiles(f);
}
}
}
} catch (Exception e) {
// TODO: handle exception
}
}
4、資料流分類
a、方向:輸入流,輸出流 InputStream OutputStream
b、位元組:位元組流,字元流 Reader Writer
c、功能:實體流,操作流
5.內部類(播放音樂)
public static void main(String[] args) {
// 背景音樂--匿名累不累(內部類)--關鍵點 new 名稱(){}---名稱可以是類,抽象類,介面
new Thread(new Runnable() {
public void run() {
String file = "/com/learn/music/Dj 出賣我.mp3";
InputStream is = this.getClass().getResourceAsStream(file);
try {
new Player(is).play();
} catch (JavaLayerException e) {
e.printStackTrace();
}
}
}).start();
}
相關推薦
java 多執行緒 資料流 內部類(播放音樂)
一.多執行緒 1.程序與執行緒 程序:負責資源管理(記憶體) 執行緒:負責的程式的執行 2.類實現 a、定義一個類,繼承Thread b、重寫Run方法 c、啟動執行緒(執行緒物件.start()
java 多執行緒 之匿名內部類實現多執行緒
package 匿名內部類實現多執行緒; public class Demo { public static void main(String[] args) { // 繼承Thread類實現多執行緒 new Thread() {
Java 多執行緒面試題及答案(非常全面)
這篇文章主要是對多執行緒的問題進行總結的,因此羅列了40個多執行緒的問題。 這些多執行緒的問題,有些來源於各大網站、有些來源於自己的思考。可能有些問題網上有、可能有些問題對應的答案也有、也可能有些各位網友也都看過,但是本文寫作的重心就是所有的問題都會按照自己的理解回答一遍,不會去看網上的
java多執行緒之等待喚醒機制(wait-notify)
wait()、notify()、notifyAll()方法 Object類裡面提供了這幾個方法: wait():讓當前執行緒處於等待(阻塞狀態),直到其他執行緒呼叫此物件的notify()或noti
Java多執行緒---阻塞佇列詳解(舉例說明)
一. 前言 在新增的Concurrent包中,BlockingQueue很好的解決了多執行緒中,如何高效安全“傳輸”資料的問題。通過這些高效並且執行緒安全的佇列類,為我們快速搭建高質量的多執行緒程式帶來極大的便利。本文詳細介紹了BlockingQueue家庭中的所有成員
Java 多執行緒的操作常見操作(Multithread operation)
作者:楊 版權宣告: 本文為博主原創文章,轉載請附上源文連結:https://my.oschina.net/yangmufa/blog/3113727 如果覺得本文對你有所收穫,你的請評論點贊與合理優質的轉發也將是鼓勵支援我繼續創
Java進階(四十二)Java中多執行緒使用匿名內部類的方式進行建立3種方式
Java中多執行緒使用匿名內部類的方式進行建立3種方式 package cn.edu.ujn.demo; // 匿名內部類的格式: public class ThreadDemo {
多執行緒和匿名內部類的理解
多執行緒 一.多執行緒 好處:提高任務的執行效率 (執行緒本身也會耗費系統資源 建立執行緒要把握度) 程序:一個正在執行的程式 一個程序可以有一個或多個執行緒 分時排程:cpu同
多執行緒Runnable匿名內部類一定要注意大坑
通常情況下,當需要模擬多執行緒的時候我們會選擇兩種方式。第一種就是自己實現Runnable類,然後在主類中呼叫我們自己實現的Runnable,例如: package concurrent; public class MyRunnable implements Runnab
從頭認識多執行緒-2.22 內部類的同步機制跟普通類相同
這一章節主要討論內部類的同步機制跟普通類相同。1.當同步方法的時候package com.ray.deepintothread.ch02.topic_22; /** * * @author RayLee * */ public class SynchOfInner
Java多執行緒超時範圍內等待完成的幾種方法
在工程專案中可能會有這麼一個場景,客戶端處理層需要從服務端(CDN/圖片伺服器)獲取n張圖片(參考微博一個人最多有9張圖片),那麼問題來了,如何在一定的時間範圍內儘可能多的獲取到圖片。當然,最為簡單粗暴的方法就是通過序列的方式來獲取,但是如果第一個請求hang
Java多執行緒之進階篇(二)
概述 1.基本原子類 1.1 AtomicBoolean 1.2 AtomicInteger和AtomicLong 2.引用原子類
Java多執行緒之進階篇(一)
一、執行緒池 1.1 執行緒池的建立 1.1.1 ThreadPoolExecutor 1.1.2 執行緒池的分類
JAVA多執行緒機制第二彈:(程式碼)Thread的子類建立執行緒
在Java中,執行緒物件的建立是用Threa類或者它的子類建立。 在編寫Thread類的子類時,需要重寫父類的run()方法,其目的是規定執行緒的具體操作,否則執行緒就沒有開始的地方 在這裡,做一個小小總結: ··線上程的編寫的時候,要重寫父類的run()方法,在ru
《Java多執行緒程式設計核心技術》(一)多執行緒技能
最近閱讀了一本《Java多執行緒程式設計核心技術》,總結了一下每章的知識點: 第一章,java多執行緒技能 知識點: 1,實現多執行緒程式設計的方式主要有兩種:一是繼承Thread類,重新r
java多執行緒-生產者與消費者模型(有限緩衝問題)
文章目錄 @[toc] 1.預備知識點 2.問題描述 3.java實現方式的預備知識 4.實現 1.預備知識點 執行緒同步 同步就是協同步調,按預定的先後次序進行執行。如:你說完,我再說。“同
15個頂級Java多執行緒面試題及回答(高階java工程師)
Java 執行緒面試問題 在任何Java面試當中多執行緒和併發方面的問題都是必不可少的一部分。如果你想獲得任何股票投資銀行的前臺資訊職位,那麼你應該準備很多關於多執行緒的問題。在投資銀行業務中多執行緒和併發是一個非常受歡迎的話題,特別是電子交易發展方面相關的。他們會問面
Java多執行緒程式設計模式實戰指南(三):Two-phase Termination模式
本文由本人首次釋出在infoq中文站上:http://www.infoq.com/cn/articles/java-multithreaded-programming-mode-two-phase-termination 停止執行緒是一個目標簡單而實現卻不那麼簡單的
java多執行緒設計模式 -- 流水線模式(Pipeline)
十一、流水線模式(Pipeline) 1、核心思想 將一個任務處理分解為若干個處理階段,其中每個處理階段的輸出作為下一個處理階段的輸入,並且各個處理階段都有相應的工作者執行緒去執行相應的計算。 2、評價: 充分利用CPU,提高其計算效率。
泥瓦匠聊併發程式設計:執行緒與多執行緒必知必會(基礎篇)
本文目錄 執行緒與多執行緒 執行緒的執行與建立 執行緒的狀態 1 執行緒與多執行緒 執行緒是什麼? 執行緒(Thread)是一個物件(Object)。用來幹什麼?Java 執行緒(也稱 JVM 執行緒)是 Java 程序內允許多個同時進行的任務。該程序內併發的任務成為執行緒(Thread)