java高级多线程(1)–实现java线程
多线程:一个程序同时执行多个任务的现象
有两个方法可以实现Java线程的定制:
1)通过继承Thread类来创建。
2)通过实现Runnable接口,并通过Thread类和实现Runnable接口的类来建立线程。
*继承Thread类
- start()
- run()
- sleep()
- interrupt()吵醒
- getName() 返回线程名字
- isAlive() 返回线程状态
- currentThread() 正在运行的资源*
实现龟兔赛跑一起跑
通过继承Thread类来创建。
class Animal extends Thread //1.继承线程类,实现多线程
{
int speed;
String name;
public Animal()
{
super();
}
public Animal(int speed, String name)
{
super();
this.speed = speed;
this.name = name;
}
//2.thread 实现run方法,有交替
public void run()
{
int n = 50/speed;
for (int i = 1;i<=n;i++)
{
System.out.println("我是:"+name+",跑了"+i+"秒");
//sleep 能看到一步一步跑
//sleep 有风险,需要try,catch ,睡觉是个有风险的事情,可能被吵醒
try
{
sleep(1000);//睡1000ms 也就是一分钟
}
catch (InterruptedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
System.out.println(name+"到达终点");
}
}
public class A
{
public static void main(String[] args)
{
Animal turtle = new Animal(5,"飞龟");
Animal rabbit = new Animal(10,"天兔");
turtle.start();//thread 里面的方法
rabbit.start();
//start 的作用:排队,等待时间片轮转,轮到turtle后,执行run()方法
//时间片轮出去后继续排队,不断交替的过程
//start ()方法里面调用了run() 方法
}
}
实现龟兔赛跑一起跑
通过实现Runnable接口
/*
* 实现runnable 接口的类,实现run()方法
*/
class Animal1 implements Runnable
{
int speed;
String name;
public Animal1()
{
super();
}
public Animal1(int speed, String name)
{
super();
this.speed = speed;
this.name = name;
}
public void run()
{
int n = 50/speed;
for(int i = 1;i<=n;i++)
{
//sleep 能看到一步一步跑
//sleep 有风险,需要try,catch ,睡觉是个有风险的事情,可能被吵醒
System.out.println("我是"+name+"跑啦"+i+"秒");
try
{
Thread.sleep(1000);//睡1000ms 也就是一分钟
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
System.out.println(name+"到达终点");
}
}
public class Two
{
public static void main(String[] args)
{
Animal1 a = new Animal1(5,"乌龟");
Animal1 b= new Animal1(10,"飞兔");
//自己创建线程类
//只有线程才会跑
Thread turtlea = new Thread(a);
Thread rabbitb = new Thread(b);
//线程搭载着乌龟白兔,去cpu里面排队
turtlea.start();
rabbitb.start();
}
}
两种方法的区别和联系