1. 程式人生 > >Java第十二天學習筆記~包、多執行緒

Java第十二天學習筆記~包、多執行緒

面向物件-----------包

概述

  • 對類檔案進行分類管理
  • 給類提供多層名稱空間
  • 寫在程式檔案的第一行
  • 類名的全稱是   包名.類名
  • 包也是一種封裝形式
class DemoA
{
	public void show()
	{
		System.out.println("demoa show run");
	}
}
package mypack;
class PackageDemo
{
	public static void main(String[] args)
	{
		packa.DemoA d=new packa.DemoA();
		d.show();
		System.out.println("hellow package");
	}
}

包與包之間的訪問

  public portected default private
同一類中 ok ok ok ok
同一包中 ok ok ok  
子類中 ok ok    
不同包中 ok      

匯入import

import packa.DemoAA;  匯入了packa包中的DemoA類

import packa.DemoA;

import packa.*;//匯入了packa包中所有的類

import packa.abc.*;匯入了packa\abc包中所有的類

導包原則:用到哪個類就匯入哪個類

 

Jar包

java的壓縮包

                           多執行緒

概述

程序:正在進行中的程式

執行緒:就是程序中一個負責程式執行的控制單元(執行路徑)

一個程序中可以多執行路徑,稱之為多執行緒

一個程序中至少要有一個執行緒

開啟多個執行緒是為了同時執行多部分程式碼

每一個執行緒都有自己執行的內容,這個內容可以稱之為執行緒要執行的任務

//多執行緒
class Demo extends Object
{
	public void finalize()
	{
		System.out.println("demo ok");
	}
}
class ThreadDemo
{
	public static void main(String[] args)
	{
		new Demo();
		new Demo();
		new Demo();
		System.gc();
		System.out.println("Hello World!");
	}
}

好處與弊端

好處:解決了多部分同時執行的問題

 

弊端:執行緒太多會導致效率的降低

 

JVM的多執行緒解析

其實程式的執行都是CPU在做著快速的切換完成的,這個切換是隨機的

JVM啟動時就啟動了多個執行緒,至少有兩個執行緒可以分析出來

1,執行main函式的執行緒

             該執行緒的任務程式碼都定義在main函式中

2,負責垃圾回收的執行緒

主執行緒執行示例

class Demo
{
	private String name;
	Demo(String name)
	{
		this.name=name;
	}
	public void show()
	{
		for(int x=0;x<10;x++)
		{
			System.out.println(name+"......x="+x);
		}
	}
}
class ThreadDemo2
{
	public static void main(String[] args)
	{
		Demo d1=new Demo("旺財");
		Demo d2=new Demo("xiaoqiang");
		d1.show();
		d2.show();
	}
}

Thread類中的方法&執行緒名稱

如何建立一個執行緒?

建立執行緒方式一:繼承Thread類

步驟:

  1. 定義一個類繼承Thread類
  2. 覆蓋Thread類中的run方法
  3. 直接建立Thread的子類物件建立執行緒
  4. 呼叫start方法開啟執行緒並呼叫執行緒的任務run方法執行

可以通過Thread的getName獲取執行緒名稱  Thread-編號(從零開始)

主執行緒的名字就是main

class Demo extends Thread
{
	private String name;
	Demo(String name)
	{
		super(name);
		//this.name=name;
	}
	public void run()
	{
		for(int x=0;x<10;x++)
		{
			System.out.println(name+"......x="+x+".....name"+Thread.currentThread().getName());
		}
	}
}
class ThreadDemo2
{
	public static void main(String[] args)
	{
		Demo d1=new Demo("旺財");
		Demo d2=new Demo("xiaoqiang");
		d1.start();
		d2.start();
		System.out.println("over....."+Thread.currentThread().getName());
	}
}