java多線程有幾種實現方法,都是什么?同步有幾種實現方法,都是什么?


多線程有兩種實現方法,分別是繼承Thread類與實現Runnable接口

同步的實現方面有兩種,分別是synchronized,wait與notify

 

 

先看一下java線程運行時各個階段的運行狀態


java實現多線程有兩種方法

1、繼承Thread類

2、實現Runnable接口

這兩種方法的共同點

不論用哪種方法,都必須用Thread(如果是Thead子類就用它本身)產生線程,然后再調用start()方法

兩種方法的不同點

1、繼承Thread類有一個缺點就是單繼承,而實現Runnable接口則彌補了它的缺點,可以實現多繼承

2、繼承Thread類必須如果產生Runnable實例對象,就必須產生多個Runnable實例對象,然后再用Thread產生多個線程;而實現Runnable接口,只需要建立一個實現這個類的實例,然后用這一個實例對象產生多個線程。即實現了資源的共享性

基於以上兩點所以建議用第二種方法

下面用例子來做說明

程序1:

 

package com.dr.runnable1;

//一個類只要繼承了Thread類,則此類就是多線程類

class MyThread extends Thread

{

    private String name;

    public MyThread(String name)

    {

        this.name=name;

    }

    //如果要使用多線程,則必須有一個方法的主體

    public void run()

    {

        //打印輸出

        for(int i=0;i<10;i++)

        {

            System.out.println(this.name+"----->運行、、、、");

        }

    }

}

public class Demo1 {

    public static void main(String args[])

    {

 

//第一種方法

         Runnable r1=new MyThread("線程A");

        Runnable r2=new MyThread("線程B");

        Runnable r3=new MyThread("線程C");

       Thread t1=new Thread(r1);

       Thread t2=new Thread(r2);

       Thread t3=new Thread(r3);

       t1.start();

       t2.start();

       t3.start();

 

  //        mt1.run();//線程執行,使用start方法

//        mt2.run();

//        mt3.run();

 

//第二種方法

 

//       MyThread mt1=new MyThread("線程A");

//        MyThread mt2=new MyThread("線程B");

//        MyThread mt3=new MyThread("線程C");

//        mt1.start();

//        mt1.start();//線程只能啟動一次

//        mt2.start();

//        mt3.start(); 

 

    } 

 

 

 

程序的運行結果是:

 

這是繼承了Thread類,第一種方法產生多個Runnable實例對象,然后用Thread產生多個線程

第二種方法,因為這個類已經繼承了Thread類,所以就可以直接利用它本身產生多個線程

程序2:

 

package com.dr.runnable1;

class MyThread1 implements Runnable

{

    private  int ticket=10;

    public void run()

    {

        for(int i=0;i<500;i++)

        {

            if(this.ticket>0)

            {

                System.out.println("賣票----->"+(this.ticket--));

            }

        }

    }

}

public class Demo2 {

    public static void main(String args[])

    {

           MyThread1 mt=new MyThread1();

        Thread t1=new Thread(mt);

        Thread t2=new Thread(mt);

        Thread t3=new Thread(mt);

        t1.start();

        t2.start();

        t3.start();

    } 

 

 

 

程序運行結果:

 

這個程序是實現Runnable了,產生一類的實例對象,然后用Thread產生多個線程。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM