java多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么?

多线程有两种实现方法,分别是继承Thread类与实现Runnable接口java

同步的实现方面有两种,分别是synchronized,wait与notify多线程

 

 

先看一下java线程运行时各个阶段的运行状态


java实现多线程有两种方法this

一、继承Thread类spa

二、实现Runnable接口线程

这两种方法的共同点对象

不论用哪一种方法,都必须用Thread(若是是Thead子类就用它自己)产生线程,而后再调用start()方法继承

两种方法的不一样点接口

一、继承Thread类有一个缺点就是单继承,而实现Runnable接口则弥补了它的缺点,能够实现多继承资源

二、继承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产生多个线程。

相关文章
相关标签/搜索