java实现多线程的两种方法的比较

先看一下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(); 

    }
 

}
 

程序的运行结果是:
1
这是继承了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();
    }
 

}
 

程序运行结果:
2
这个程序是实现Runnable了,产生一类的实例对象,然后用Thread产生多个线程。
分享至
一键收藏,随时查看,分享好友!
skx1001、xiaoyao3857
2人
了这篇文章
类别: java基础┆阅读( 0)┆评论( 0) ┆ 返回博主首页┆ 返回博客首页
上一篇 简单应用小程序(类与类之间的关系调用) 下一篇 用多线程模拟生产零件系统程序

相关文章

  • Java中断线程
  • 浅析Java多线程技术中所使用的方法
  • java多线程编程
  • Java:使用Executors创建和管理线程
  • java多线程之 wait(),notify(),notifyAll()[迁]

职位推荐

  • Java高级工程师(探针)
  • JAVA工程师
  • 高级Java想挣钱的看看
  • Java架构师
  • 移动端测试工程师

文章评论

 
[1楼]        skx1001  回复
2010-11-08 18:02:37

推荐一个学习网站挺好的 可以免费下载或者在线观看
www.ascenttech.cn 北京亚思晟的网站

[2楼]        xiaoyao3857  回复
2013-11-06 12:49:17
good and simple blog

 

发表评论            

昵  称:
登录  快速注册
验证码:

点击图片可刷新验证码请点击后输入验证码博客过2级,无需填写验证码

内  容:

同时赞一个

你可能感兴趣的:(java,线程,职场,休闲)