线程的实现有两种 方式,第一种方式是继承Thread类,
然后重写run方法,第二种是实现Runnable接口,然后实现
其run方法。
将我们希望线程执行的代码放到run方法中,然后通过start方法来启动线程,start方法
首先为线程的执行准备好系统资源,然后再去调用run方法。当某个类继承了Thread类之后
就成为了一个线程类。
一个进程至少要包含一个线程。
Thread 类实现了Runnable接口 因此实现了run方法。
import java.util.Random;
public class ThreadTest3
{
public static void main(String[] args)
{
Runnable t = new HelloThread();
Thread t1 = new Thread(t);
t1.start();
t= new HelloThread();
Thread t2 = new Thread(t);
t2.start();
}
}
class HelloThread implements Runnable
{
int i = 0; //这里两个线程没有共享一个i的值是因为HelloThread的类的实例 r又new出来了一个也就是说线程实例是根据不同的HelloThread实例来生成的
@Override
public void run()
{
while(true)
{
try
{
Thread.sleep((long)(new Random().nextInt(10)) * 100);
}
catch (InterruptedException e)
{
e.printStackTrace();
}
System.out.println("i的值是:" + i++);
if(i == 10)
break;
}
}
}
i的值是:0
i的值是:0
i的值是:1
i的值是:1
i的值是:2
i的值是:2
i的值是:3
i的值是:3
i的值是:4
i的值是:5
i的值是:6
i的值是:7
i的值是:8
i的值是:4
i的值是:9
i的值是:5
i的值是:6
i的值是:7
i的值是:8
i的值是:9