1. 程式人生 > >java 多執行緒 資料流 內部類(播放音樂)

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)