第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

【金秋打卡】第16天-C01學(xué)習(xí)Java線程-復(fù)習(xí)第二章

標(biāo)簽:
Java

课程内容

  • 实现多线程的方法

    • Oracle官网文档说有两种方法

      1. 实现Runnable接口

        public class RunableStyle implements Runnable {
            @Override
            public void run() {
                System.out.println("Runable style");
            }
            public static void main(String[] args) {
                new Thread(new RunnableStyle()).start();
            }
        }
        
      2. 继承Thread类

        public class ThreadStyle extends Thread {
            @Override
            public void run() {
                System.out.println("Thread style");
            }
            public static void main(String[] args) {
                new ThreadStyle().start();
            }
        }
        
      3. 两种方法的对比

        • 实现Runnable接口更好一些
        • 继承Thread有什么缺点
          • 线程实现方法都是run()方法,这个方法应该和线程的创建与运行机制相隔离,即解耦,但继承这个类,重写run()方法,使得线程类本身与业务代码绑定在了一起
          • 如果想新建一个任务,就必须要创建一个新的线程,而这个过程非常消耗系统资源
          • 而使用Runnable接口就可以利用后续的线程池工具,可以完全避免上述问题
  • 思考题:同时使用上述的创建线程的两种方法会怎么样?

    • 两种创建线程方法

      • 继承Thread类,并重写run()方法
      • 实现Runnable接口,并实现run()方法
    • 把这个两种实现都写在一个类内会出现什么结果,是重写的run()方法被执行,还是实现的run()方法被执行?

      public static void main(String[] args) {
          new Thread(new Runnable() {
              @Override
              public void run() {
                  System.out.println("Runnable implements");
              }
          }) {
              @Override
              public void run() {
                  System.out.println("Thread extends");
              }
          }.start();
      }
      
    • 上述代码的写法,感觉两个方法都可以执行,正确判断执行结果,需要查看Thread类的源代码

      // Thread类run()方法源代码写法
      public void run() {
          if (target != null) {
              target.run();
          }
      }
      
    • 上面代码中target代表线程类对象,可以执行外部传入的线程对象

      • 而当把两种执行方法都写在一个类中,Thread类中的run()方法就被覆盖,即target即使被传入,但覆写的代码中,没有对这个对象的调用代码,也就是说,传入的线程对象不会被执行
      • 所以最终执行结果内容就为:Thread extends
  • 最精确的总结

    • 创建线程只有一种方式,那就是构造Thread类,而实现线程执行单元有两种方式
      1. 实现Runnable接口的run()方法,并将Runnable实例传给Thread
      2. 重写Threadrun()方法(继承Thread类)

学习心得

线程的学习任重而道远
创建线程的描述

點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺(jué)得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
JAVA開(kāi)發(fā)工程師
手記
粉絲
9
獲贊與收藏
1

關(guān)注作者,訂閱最新文章

閱讀免費(fèi)教程

  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫(xiě)下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開(kāi)微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消