一,java线程的周期
线程的五个基本状态:
New :新建线程(创建一个线程,但是没有任何可运行的实体);
Runnable: 线程就绪,将程序变量实体放入线程中;
Running 运行(运行放入的程序)
Blocked 阻塞(程序暂停,等待自动唤醒或者被动唤醒)
Dead 结束(程序运行结束或者异常退出)
二、Java线程的实现
Java线程方式主要有三种实现方式1.继承Thread 类 重写run方法
class MyFirstThread extends Thread{
private int i=0;
@Override
public void run() {
// TODO Auto-generated method stub
for(i=0;i<100;i++){
System.out.println(Thread.currentThread().getName()+" "+i);
}
}
}
2.实现Runnable方法
class MyFirstRunnable implements Runnable{
private int i=0;
@Override
public void run() {
// TODO Auto-generated method stub
for(i=0;i<10;i++){
System.out.println(Thread.currentThread().getName()+" "+ i);
}
}
}
Thread 和Runnable两种实现方式
继承Thread接口 或者实现Runnable两种方式
具体实现的时候
Thread :
Thread firstThread= new MyFirstThread();
firstThread.start();
Runnable:
Runnable second= new MyFirstRunnable();
firstT.start();
注意:类的单继承和多实现在很大程度上决定了线程的实现方法
3.使用Callable 和Future 接口创建线程。(具有返回值的线程)
Callbale: 创建Callable接口的实现类并实现clall() 方法;
并使用FutureTask 类来包装callable实现类的对象,并以此FutureTask对象作为Thread对象的Target来创建线程
class MyCallable implements Callable {
private int i=0;
@Override
public Integer call() throws Exception {
int sum=0;
for(i=0;i<10;i++){
System.out.println(Thread.currentThread().getName()+" "+i);
sum++;
}
return sum;
}
}