Java创建线程
线程创建:Thread Runnabel Callable
Tread class
- 
自定义线程类继承Tread类 
- 
重写run()方法,编写线程执行体 
- 
创建线程对象,调用start()方法启动线程 
public class myTread extends Thread{
    @Override
    public void run() {
        System.out.println("子线程开启");
    }
    public static void main(String[] args) {
        myTread tread = new myTread();
        tread.start();
    }
}
注意:线程创建不一定立即执行,cpu自行调度
Runnable接口
- 定义类实现Runnable接口
- 实现run()方法,编写线程执行体
- 创建线程对象,调用start()执行线程
public class myTread implements Runnable{
    public void run() {
        System.out.println("子线程开启");
    }
    public static void main(String[] args) {
      new Thread(new myTread()).start();//匿名内部类
    }
}
注意:推荐使用Runnable对象,因为java单继承的局限性,方便一个对象被多个线程使用
Callable接口
- 
实现Callable接口,需要返回值类型 
- 
重写call方法,需要抛出异常 
- 
创建目标对象 
- 
创建执行服务:ExecutorService ser = Executors.newFixedThreadPoll(1); 
- 
提交执行:Future result1 = ser.submit(t1); 
- 
获取结果:boolean r1 = result1.get(); 
- 
关闭服务:ser.shutdownNow(); 
public class myTread implements Callable<Boolean> {
    //重写call方法
    @Override
    public Boolean call() throws Exception {
        System.out.println(Thread.currentThread().getName()+"->启动了");
        return true;
    }
    public static void main(String[] args) throws ExecutionException, InterruptedException {
        //创建对象
        myTread t1 = new myTread();
        myTread t2 = new myTread();
        myTread t3 = new myTread();
        //创建服务
        ExecutorService ser = Executors.newFixedThreadPool(3);
        //提交执行 同start()
        Future<Boolean> r1 = ser.submit(t1);
        Future<Boolean> r2 = ser.submit(t2);
        Future<Boolean> r3 = ser.submit(t3);
        //获取结果
        boolean res1 = r1.get();
        boolean res2 = r2.get();
        boolean res3 = r3.get();
        //关闭服务
        ser.shutdownNow();
    }
}
 
                     
                    
                 
                    
                 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号