当前位置 博文首页 > 文章内容

    JAVA高级复习-多线程创建方式一

    作者: 栏目:未分类 时间:2020-07-25 11:00:29

    本站于2023年9月4日。收到“大连君*****咨询有限公司”通知
    说我们IIS7站长博客,有一篇博文用了他们的图片。
    要求我们给他们一张图片6000元。要不然法院告我们

    为避免不必要的麻烦,IIS7站长博客,全站内容图片下架、并积极应诉
    博文内容全部不再显示,请需要相关资讯的站长朋友到必应搜索。谢谢!

    另祝:版权碰瓷诈骗团伙,早日弃暗投明。

    相关新闻:借版权之名、行诈骗之实,周某因犯诈骗罪被判处有期徒刑十一年六个月

    叹!百花齐放的时代,渐行渐远!



    一、多线程创建

    可以通过两种方式创建多线程。

    方式一:继承Thread类

    1、创建一个继承于Thread类的子类
    2、重写Thread类的run() --> 将此线程执行的操作声明在run()中
    3、创建Thread类的子类的对象
    4、通过此对象调用start()

    /**
     * @description:多线程的创建:两种方式
     * @date: 2020/7/25 10:32
     * @author: winson
     */
    public class CreateThread {
        public static void main(String[] args) {
            MyThread t1 = new MyThread();
            t1.start();
            //如果直接调用父类的run方法,此不会开启新线程,还是在mian线程中执行方法;
            //问题一:我们不能通过直接调用run方法的方式启动线程;
            //t1.run();
    
            //问题二:再启动一个线程,遍历50内的偶数,不可以还让已经start()的线程去执行,汇报java.lang.IllegalThreadStateException
            //我们需要重新创建一个线程的对象;
            MyThread t2 = new MyThread();
            t2.start();
            for (int i = 0; i < 50; i++) {
                if (i % 2 == 0) {
                    System.out.println(Thread.currentThread().getName() + ":" + i);
                }
            }
        }
    }
    
    /**
     * 方式一:继承Thread类
     * 1、创建一个继承于Thread类的子类
     * 2、重写Thread类的run() --> 将此线程执行的操作声明在run()中
     * 3、创建Thread类的子类的对象
     * 4、通过此对象调用start()
     */
    
    class MyThread extends Thread {
        @Override
        public void run() {
            for (int i = 0; i < 50; i++) {
                if (i % 2 == 0) {
                    System.out.println(Thread.currentThread().getName() + ":" + i);
                }
            }
        }
    }
    

    start()方法的作用:1、使该线程开始执行;2、Java 虚拟机调用该线程的 run()方法。如果直接调用父类的run()方法,此不会开启新线程,还是在mian线程中执行方法;

    总结:

    问题一:我们不能通过直接调用run()方法的方式启动线程;如果直接调用父类的run()方法,此不会开启新线程,还是在mian线程中执行方法;

    问题二:再启动一个线程,遍历50内的偶数,不可以还让已经start()的线程去执行,汇报java.lang.IllegalThreadStateException, 我们需要重新创建一个线程的对象;