JAVA 學習十八: 線程的四種狀態

這裏寫圖片描述

1.包

/*
Package:
1.對類文件進行分類管理
2.給類提供多層命名空間
3.寫在程序文件的第一行
4.類名的全稱是 包名.類名
5.包也是一種封裝形式

         public     protected     default    privata
同一類中  ok          ok            ok          ok

同一包中  ok          ok            ok

子類中    ok          ok

不同包中  ok


bao。類

import packa.Demo //導入包中的類
inport packa.* //導入包中的所有的類


導包的原則:用哪個導哪個

set 。。。 、haha.jar  將文件導成jar包


*/

2. 線程的第二種開啓方法

/*
線程的四種狀態:

創建、(start())運行、(run()方法結束/stop())消亡、凍結(不再運行但還存在 sleep(time)方法/wait() nitify()喚醒)

cpu執行資格: 可以被cpu執行,但要排隊

cpu執行權: 正在被cpu處理

凍結: 釋放執行權的同時釋放執行資格
*/

/*

創建線程的第二種方式:
接口實現線程:Runnable接口

1.定義類實現Runnable接口
2.覆蓋接口方法中的run方法,將線程任務代碼封裝到run方法中。
3.通過Thread類創建線程對象,並將Runable接口的子類對象作爲Thread 類的構造函數的參數進行傳遞。
4.通過線程對象的start方法開啓線程


Runnable d = new Demo();
Runnable d1 = new Demo();
Thread t1 = new Thread(d);
Thread t1 = new Thread(d1);
t1.start();
t2.start();


繼承Thread 與 實現Runnable 接口的區別:
1.實現Runable的好處
    1.將線程的任務從線程的子類分離出來,進行了單獨的封裝。按照面向對象的思想將任務封裝成對象
    2.避免了java單繼承的侷限性

    所以創建線程的第二種方式較爲常用



*/


class Demo implements Runnable
{
    public void run()
    {
        show();
    }

    public void show()
    {
        for (int i =0;i <=10 ;i++ )
        {
            System.out.println(Thread.currentThread().getName()+ x)
        }
    }
}


class ThreaDemo
{
    public static void main(String[] args)
    {
        Runnable d = new Demo();
        Thread t1 = new Thread(d);
        t1.start();
    }
}

3.同步



/*
需求:兩個儲戶,每個儲戶都到銀行存錢,每次存一百,共存三次
描述:




同步:
同步的前提:
    必須有多個線程並使用同一個鎖

同步的好處: 解決了線程的安全問題

同步的弊端: 像對降低了效率,因爲同步外的線程都會判斷同步鎖。
*/

class Ban
{
    private int sum;
    private Object obj = new Object(); 
    //public void add(int num)
    public synchronized void add(int sum)
    {
        synchronized(obj)//同步鎖
        {sum = sum + num;
        System.out.println(sum);
    }
    }
}

class Cus implements Runnable

{
    private Ban b = new Ban();
    public void run()
    {

        for (int i =0;i<3;i++ )
        {
            b.add(100);
        }
    }
}

class Demo

{
    public static void main(String[] args)
    {
        Cus c = new Cus();
        Thread t1 = new Thread(c);
        Thread t2 = new Thread(c);
        t1.start();
        t2.start();
    }
}

4.應用



/*
需求:兩個儲戶,每個儲戶都到銀行存錢,每次存一百,共存三次
描述:




同步:
同步的前提:
    必須有多個線程並使用同一個鎖

同步的好處: 解決了線程的安全問題

同步的弊端: 像對降低了效率,因爲同步外的線程都會判斷同步鎖。
*/

class Ban
{
    private int sum;
    private Object obj = new Object(); 
    public void add(int num)
    {
        synchronized(obj)
        {sum = sum + num;
        System.out.println(sum);
    }
    }
}

class Cus implements Runnable

{
    private Ban b = new Ban();
    public void run()
    {

        for (int i =0;i<3;i++ )
        {
            b.add(100);
        }
    }
}

class Demo

{
    public static void main(String[] args)
    {
        Cus c = new Cus();
        Thread t1 = new Thread(c);
        Thread t2 = new Thread(c);
        t1.start();
        t2.start();
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章