2018-01-13

一,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;

        }

}

你可能感兴趣的:(2018-01-13)