Java第十二天學習筆記~包、多執行緒
阿新 • • 發佈:2018-12-27
面向物件-----------包
概述
- 對類檔案進行分類管理
- 給類提供多層名稱空間
- 寫在程式檔案的第一行
- 類名的全稱是 包名.類名
- 包也是一種封裝形式
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類
步驟:
- 定義一個類繼承Thread類
- 覆蓋Thread類中的run方法
- 直接建立Thread的子類物件建立執行緒
- 呼叫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());
}
}