2022/08/02 学习笔记 (day22) 多线程

本文详细探讨了Java多线程的实现,包括通过继承Thread类和实现Runnable接口创建线程,线程同步机制如synchronized和Reentrant Lock,线程间的通信方法wait、notify、notifyAll,以及线程安全的实现策略,如数据不可变、互斥同步和无锁编程等。同时,讲解了线程的生命周期和状态转换,以及CPU多核缓存结构对线程的影响。
摘要由CSDN通过智能技术生成

目录

多线程: 

          1.创建线程:

   (1)继承Thread类:

   (2)Runnable接口(推荐使用):

          2.Thread和Runnable的区别:

          3.线程的生命周期:

          4.CPU多核缓存结构:

 5.线程安全的实现方法:

线程状态转换:


多线程: 

1.创建线程的4种方式  (熟练掌握)*****
2.线程同步(synchronized,Reentrant lock,Reentrant write lock)(熟练掌握)
3.线程之间的通信(wait,notify,notifyAll)(熟练掌握)*****
4.线程类的常用方法 (了解透彻)***

1.创建线程:

  (1)继承Thread类:

      Thread类中的run方法不是抽象方法,Thread类也不是抽象类

      MyThread当继承了Thread类之后,它就是一个独立的线程。

      要让线程启动。调用线程的start方法。 

 

class MyThread extends Thread {

    @Override
    public void run() {
        System.out.println(2);
    }
}

public class Ch01 {

    public static void main(String[] args) {
        System.out.println(1);
        //
        MyThread myThread = new MyThread();
        // 当调用start方法启动一个线程时,会执行重写的run方法的代码
        // 调用的是start,执行的是run,为什么不直接调run
        myThread.start();
        // 普通的对象调方法
//        myThread.run();

        // 线程的优先级,概率问题!做不到百分百
        // 90会先跑主方法 10先跑mythread

        System.out.println(3);
        System.out.println(4);
    }
}

   (2)Runnable接口(推荐使用):

class MyThread2 implements Runnable {

    @Override
    public void run() {
        System.out.println(2);
    }
}

public class Ch02 {

    public static void main(String[] args) {
        System.out.println(1);
//        start
        MyThread2 myThread2 = new MyTh
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值