我在上海樂位元組學習java的第十一天(持續更新中)
包
對檔案進行分類管理(當類檔名相同時)
對類提供多層名稱空間
寫在程式檔案的第一行
類名的全程是報名.類名
包也是一種封裝形式
package lesson11;//包可以多層巢狀
import java.util.Arrays;//為了簡化類名的書寫
public class test1 {
public static void main(String [] args){
int[] arr=new int[]{1,2,45,4,5,23,7,8};
//列印陣列
String res=Arrays.toString(arr);
System.out.println(res);
//陣列排序
Arrays.sort(arr);
res=Arrays.toString(arr);
System.out.println(res);
}
}
也可以這麼寫
package lesson11;//包可以多層巢狀
public class test1 {
public static void main(String [] args){
int[] arr=new int[]{1,2,45,4,5,23,7,8};
//列印陣列
String res=java.util.Arrays.toString(arr);
System.out.println(res);
//陣列排序
java.util.Arrays.sort(arr);
res=java.util.Arrays.toString(arr);
System.out.println(res);
}
}
<<<
[1, 2, 45, 4, 5, 23, 7, 8]
[1, 2, 4, 5, 7, 8, 23, 45]
結果是一樣的
jar包
Jar :java的壓縮包 我用的是idea下邊演示一下idea怎樣打JAR包
選取主類
多執行緒
程式:正在進行中的程式。(當然這麼說太直接了)
執行緒:就是程式中一個負責程式執行的控制單元。(執行路徑)
一個程式中可以有多個執行緒,稱為多執行緒。
開啟多個執行緒是為了同時執行多個程式碼,每一個執行緒都有自己執行的程式碼,這個內容可以稱為執行緒要執行的任務。
多執行緒存在哪些弊端? windows看起開是同時執行了多工,但是其實不是,只是執行任務切換比較快(時間片),當執行緒太多效率就會降低。
在java虛擬機器中,有一個執行緒在執行主執行緒,還有個一執行緒進行GC,jvm中實現了多執行緒。
package lesson11;
public class test2 {
public static void main(String []args){
new Demo();
new Demo();
System.gc();//呼叫gc,呼叫物件的finalize回收方法
new Demo();
System.out.println(“Hello world”);
}
}
class Demo extends Object{
public void finalize(){
System.out.println(“ok”);
}
}
<<<
ok
Hello world
ok
單執行緒
package lesson11;
public class test2 {
public static void main(String []args){
Demo d1 = new Demo(“d1”);
Demo d2 = new Demo(“d2”);
d1.show();
d2.show();
}
}
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); } } } <<< d1
0
d11 d1
2
d13 d1
4
d15 d1
6
d17 d1
8
d19 d2
0
d21 d2
2
d23 d2
4
d25 d2
6
d27 d2
8
d2````````9
建立執行緒
建立執行緒的第一種方式:
- 定義一個類繼承Thread類
- 覆蓋run方法
- 啟動執行緒物件的start方法
package lesson11;
public class test3 {
public static void main(String [] args){
MyThread a = new MyThread(“Thread_a”);
MyThread b = new MyThread(“thread_b”);
a.start();
b.start();
}
}
class MyThread extends Thread{
private String name;
MyThread(String name ){
this.name = name;
}
@Override
public void run() {
for(int i =0;i<10;i++){
System.out.println(name+"-------"+i);
}
}
}
<<<
Thread_a-------0
thread_b-------0
Thread_a-------1
thread_b-------1
Thread_a-------2
thread_b-------2
Thread_a-------3
thread_b-------3
Thread_a-------4
Thread_a-------5
thread_b-------4
Thread_a-------6
Thread_a-------7
thread_b-------5
thread_b-------6
Thread_a-------8
thread_b-------7
thread_b-------8
thread_b-------9
Thread_a-------9
package lesson11;
public class test3 {
public static void main(String [] args){
MyThread a = new MyThread(“Thread_a”);
MyThread b = new MyThread(“thread_b”);
a.run();
b.run();
}
}
class MyThread extends Thread{
private String name;
MyThread(String name ){
this.name = name;
}
@Override
public void run() {
for(int i =0;i<10;i++){
System.out.println(name+"-------"+i);
}
}
}
<<<
Thread_a-------0
Thread_a-------1
Thread_a-------2
Thread_a-------3
Thread_a-------4
Thread_a-------5
Thread_a-------6
Thread_a-------7
Thread_a-------8
Thread_a-------9
thread_b-------0
thread_b-------1
thread_b-------2
thread_b-------3
thread_b-------4
thread_b-------5
thread_b-------6
thread_b-------7
thread_b-------8
thread_b-------9
呼叫run方法的話就是正常的呼叫,並沒有使用任務的切換過程。
package lesson11;
public class test3 {
public static void main(String [] args){
MyThread a = new MyThread(“Thread_a”);
MyThread b = new MyThread(“thread_b”);
a.start();
b.start();
System.out.println(“over”);
}
}
class MyThread extends Thread{
private String name;
MyThread(String name ){
this.name = name;
}
@Override
public void run() {
for(int i =0;i<10;i++){
System.out.println(name+"-------"+getName());//getname可以獲取執行緒的名字
}
}
}
<<<
over
Thread_a-------Thread-0
thread_b-------Thread-1
Thread_a-------Thread-0
thread_b-------Thread-1
Thread_a-------Thread-0
thread_b-------Thread-1
thread_b-------Thread-1
Thread_a-------Thread-0
thread_b-------Thread-1
Thread_a-------Thread-0
Thread_a-------Thread-0
Thread_a-------Thread-0
thread_b-------Thread-1
Thread_a-------Thread-0
thread_b-------Thread-1
thread_b-------Thread-1
thread_b-------Thread-1
thread_b-------Thread-1
Thread_a-------Thread-0
Thread_a-------Thread-0
兩個子執行緒的執行不影響主程式的巡行執行
package lesson11;
public class test3 {
public static void main(String [] args){
MyThread a = new MyThread(“Thread_a”);
MyThread b = new MyThread(“thread_b”);
a.run();
b.run();
System.out.println(“over”);
}
}
class MyThread extends Thread{
private String name;
MyThread(String name ){
this.name = name;
}
@Override
public void run() {
for(int i =0;i<10;i++){
System.out.println(name+"-------"+getName());
}
}
}
<<<
Thread_a-------Thread-0
Thread_a-------Thread-0
Thread_a-------Thread-0
Thread_a-------Thread-0
Thread_a-------Thread-0
Thread_a-------Thread-0
Thread_a-------Thread-0
Thread_a-------Thread-0
Thread_a-------Thread-0
Thread_a-------Thread-0
thread_b-------Thread-1
thread_b-------Thread-1
thread_b-------Thread-1
thread_b-------Thread-1
thread_b-------Thread-1
thread_b-------Thread-1
thread_b-------Thread-1
thread_b-------Thread-1
thread_b-------Thread-1
thread_b-------Thread-1
over
主函式呼叫run方法應該只有一個執行緒在執行沒什麼呼叫getname還是能顯示Thread-0
這個方法返回的是執行緒所屬於的執行緒組,並不是正在執行的執行緒。
package lesson11;
public class test3 {
public static void main(String [] args){
MyThread a = new MyThread(“Thread_a”);
MyThread b = new MyThread(“thread_b”);
a.run();
b.run();
System.out.println(“over”);
}
}
class MyThread extends Thread{
private String name;
MyThread(String name ){
this.name = name;
}
@Override
public void run() {
for(int i =0;i<10;i++){
System.out.println(name+"-------"+Thread.currentThread().getName());//現在正在執行的執行緒
}
}
}
<<<
Thread_a-------main
Thread_a-------main
Thread_a-------main
Thread_a-------main
Thread_a-------main
Thread_a-------main
Thread_a-------main
Thread_a-------main
Thread_a-------main
Thread_a-------main
thread_b-------main
thread_b-------main
thread_b-------main
thread_b-------main
thread_b-------main
thread_b-------main
thread_b-------main
thread_b-------main
thread_b-------main
thread_b-------main
over
package lesson11;
public class test3 {
public static void main(String [] args){
MyThread a = new MyThread(“Thread_a”);
MyThread b = new MyThread(“thread_b”);
a.start();
b.start();
System.out.println(“over”+Thread.currentThread().getName());
}
}
class MyThread extends Thread{
private String name;
MyThread(String name ){
this.name = name;
}
@Override
public void run() {
for(int i =0;i<10;i++){
System.out.println(name+"-------"+Thread.currentThread().getName());
}
}
}
<<<
overmain
Thread_a-------Thread-0
thread_b-------Thread-1
Thread_a-------Thread-0
thread_b-------Thread-1
Thread_a-------Thread-0
thread_b-------Thread-1
Thread_a-------Thread-0
thread_b-------Thread-1
Thread_a-------Thread-0
thread_b-------Thread-1
Thread_a-------Thread-0
thread_b-------Thread-1
Thread_a-------Thread-0
Thread_a-------Thread-0
thread_b-------Thread-1
Thread_a-------Thread-0
thread_b-------Thread-1
Thread_a-------Thread-0
thread_b-------Thread-1
thread_b-------Thread-1
相關文章
- 我在上海樂位元組學習的第二十一天(持續更新中)
- 在上海樂位元組學習Java的第十七天Java
- Java 學習筆記(持續更新)Java筆記
- 在樂位元組學習的第三天
- 學習《Java虛擬機器》目錄索引(持續更新中)Java虛擬機索引
- JAVA系列合集(持續更新中)Java
- PHP 的自動載入(持續學習更新中)PHP
- 【Elasticsearch學習】DSL搜尋大全(持續更新中)Elasticsearch
- drupal7學習筆記—–(持續更新中…)筆記
- 鴻蒙OS學習資料整理,持續更新中鴻蒙
- 學習 Laravel —— 前端篇(持續更新)Laravel前端
- 【持續更新...】ECharts學習筆記Echarts筆記
- 【持續更新...】Nginx 學習筆記Nginx筆記
- AnimalController 學習 持續更新Controller
- Java學習筆記——第十一天Java筆記
- 【持續更新...】Microsoft SSIS 學習筆記ROS筆記
- 我的Android開發框架Collection(持續更新中)Android框架
- 【持續更新...】ligerGrid 學習筆記筆記
- 前端學習資源彙總(持續更新)前端
- C語言初學習——易錯點合集(持續更新中)C語言
- Git在專案中的那些實操(持續更新...)Git
- git使用、持續更新中Git
- 持續學習
- 學習 Java 之 位元組碼驗證Java
- (持續更新)Qt3D 學習資源QT3D
- Kotlin學習資料彙總(持續更新...)Kotlin
- Java架構師 - 基礎篇(持續更新中)Java架構
- 關於在Flutter Web中載入html(持續更新中......)FlutterWebHTML
- 2021年最新整理, C++ 學習資料[持續更新中]C++
- 2020年大資料學習大綱(持續更新中...)大資料
- 如果你也打算學習 Spring Cloud [持續更新]SpringCloud
- PHP學習路線資源總結[持續更新]PHP
- Kotlin系列教程——史上最全面、最詳細的學習教程,持續更新中....Kotlin
- javaScript 習題總結(持續更新)JavaScript
- 愛玩手機的貓Linux學習筆記(持續更新)Linux筆記
- 一些JavaSE學習過程中的思路整理(主觀性強,持續更新中...)Java
- Linux 系統化學習系列文章總目錄(持續更新中)Linux
- Spring面試題(持續更新中)Spring面試題