zoukankan      html  css  js  c++  java
  • 如何正确的创建线程

    一、什么是线程?

    在我们编写的程序中,代码从main函数一行一行的执行,这就是一个线程,而且是主线程。

    多线程就是同时存在多条路线进行执行,好比于百米赛跑,多个跑道上的运动员一起跑步争取冠军。

    二、创建线程的两种方式

    run方法会在调用start()方法之后被执行,为什么?(请告知),所以我们要继承重载run()方法。

    1、通过扩展Thread类来创建多线程(重载 run 方法)

     //创建Thread类的子类,是一个匿名类,重载run方法
             Thread thread1 =new Thread(){
                 @Override
                public void run() {
                    while(true){
                        try {
                            Thread.sleep(500);
                        } catch (Exception e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                        System.out.println(Thread.currentThread().getName());
                    }
                }
             };

    2、实现Runnalbe接口,重载Runnalbe接口中的run()方法。

    1、为什么要实现 Runnable  接口,我们看一段Thread的源代码:

     /* 内部定义了一个Runnable的变量:target. */
        private Runnable target;
    
    /*构造方法来初始化Runable类型的target变量 */
     public Thread(Runnable target) {
            init(null, target, "Thread-" + nextThreadNum(), 0);
        }
    /* 调用run 方法 */
      @Override
        public void run() {
            if (target != null) {
                target.run();
            }
        }

    2、如何实现呢?

             Thread thread2=new Thread(new Runnable() {
                @Override
                public void run() {
                    // TODO Auto-generated method stub
                    while(true){
                        try {
                            Thread.sleep(500);
                        } catch (Exception e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                        System.out.println(Thread.currentThread().getName());
                    }
                }
            });

    3、总结

    两种方法实现,选择自己喜欢的一种,大部分选择第二种,主要符合Java面向对象的思想

  • 相关阅读:
    swoole 安装方法 使用即时聊天
    git的介绍以及简单应用
    curl的应用
    linux下监听和同步代码配置
    mac skim 修改背景色
    php 编译安装的一个 configure 配置
    mac mysql error You must reset your password using ALTER USER statement before executing this statement.
    yii2 控制器里 action 大小写组合造成的路由问题
    warning : json_decode(): option JSON_BIGINT_AS_STRING not implemented in xxx
    redis 自启动脚本
  • 原文地址:https://www.cnblogs.com/lyajs/p/5638672.html
Copyright © 2011-2022 走看看