Java多线程

Thread
自定义线程类继承Thread类
重写run()方法,编写线程执行体
创建线程对象,调用start()方法启动线程

//创建线程方式一;继承Thread类,重写run()方法,调用start开启线程
//总结:注意线程的开启不一定立刻执行,由cpu调度执行
public class TestThread extends Thread {
    @Override
    public void run() {
        super.run();
        //run方法线程体
        for (int i = 0; i < 1000; i++) {
            System.out.println("我在看代码---");

        }
    }


    public static void main(String[] args) {
        //main线程,主线程

        //创建一个线程对象
        TestThread testThread1=new TestThread();

        //调用start()方法开启线程
        testThread1.start();




        for (int i = 0; i < 1000; i++) {
            System.out.println("我在学习多线程---");
        }
    }
}
//创建线程方式一;继承Thread类,重写run()方法,调用start开启线程
//总结:注意线程的开启不一定立刻执行,由cpu调度执行
public class TestThread extends Thread {
    @Override
    public void run() {
        super.run();
        //run方法线程体
        for (int i = 0; i < 1000; i++) {
            System.out.println("我在看代码---");

        }
    }


    public static void main(String[] args) {
        //main线程,主线程

        //创建一个线程对象
        TestThread testThread1=new TestThread();

        //调用start()方法开启线程
        testThread1.start();




        for (int i = 0; i < 1000; i++) {
            System.out.println("我在学习多线程---");
        }
    }
}

实现Runnable
定义MyRunnable类实现Runnable接口
实现run()方法,编写线程执行体
创建线程对象,调用start()方法启动线程
//方式2,实现Runnable ,重写run方法,执线程需要丢入Runnable接口实现类,调用start方法
public class TestThread implements Runnable {
    @Override
    public void run() {
        super.run();
        //run方法线程体
        for (int i = 0; i < 1000; i++) {
            System.out.println("我在看代码---");

        }
    }


    public static void main(String[] args) {
        //main线程,主线程

        //创建一个线程对象
        TestThread testThread1=new TestThread();

        //调用start()方法开启线程
        testThread1.start();




        for (int i = 0; i < 1000; i++) {
            System.out.println("我在学习多线程---");
        }
    }
}
//创建线程方式一;继承Thread类,重写run()方法,调用start开启线程
//总结:注意线程的开启不一定立刻执行,由cpu调度执行
public class TestThread extends Thread {
    @Override
    public void run() {
        super.run();
        //run方法线程体
        for (int i = 0; i < 1000; i++) {
            System.out.println("我在看代码---");

        }
    }


    public static void main(String[] args) {
        //main线程,主线程

        //创建一个线程对象
        TestThread testThread1=new TestThread();

        new Thread(testThread).start();



        for (int i = 0; i < 1000; i++) {
            System.out.println("我在学习多线程---");
        }
    }
}
小结
继承Thread类
子类继承Thread类具备多线程能力
启动线程:子类对象.start()
不建议使用:避免OOP单继承局限性
 
实现Runnable接口
实现接口Runnable具有多线程能力
启动线程:传入目标对象+Thread对象.start()
推荐使用:避免单继承局限性,灵活方便,方便同一个对象被多个线程使用
 
 实现Callable接口(了解)
1.实现Callable接口,需要返回值
2.重写从call方法,需要抛出异常
3.创建目标对象
4.创建执行服务:ExecutorService=Executors.ThreadPool(1);
5.提交任务:Future<Boolean>result1 = ser.submit(t1);
6.获取结果:boolean r1 =result1.get()
7.关闭服务:ser,shutdownNow();
posted @ 2021-08-14 11:30  小羊ooo926  阅读(26)  评论(0)    收藏  举报