先看一下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:
class mythread1 implements runnable
private int ticket=10;
for(int i=0;i<500;i++)
if(this.ticket>0)
system.out.println("卖票----->"+(this.ticket--));
}
public class demo2
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产生多个线程。
打赏
<b></b>赞
<b></b>收藏
<b></b>评论
分享
微博
微信
举报
上一篇:简单应用小程序(类与类之间的关系调用)
下一篇:用多线程模拟生产零件系统程序
java实现多线程的两种方式比较及区别,线程编程的两种方法,python实现奖金计算两种方法的比较,(转载)java云计算两种方法的比较,java多线程实现的两种方式,java 多线程的两种方法,java中实现多线程般使用两种方法,java创建线程的两种方法,java创建进程的两种方法,java声明变量的两种方法