多线程知识点总结

本文详细介绍了多线程的基本概念,包括进程与线程的区别,创建线程的两种方法(继承Thread类与实现Runnable接口),并探讨了常见的多线程面试问题及解决方案,如懒汉式的线程安全问题和同步代码块的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

多线程知识点总结

 * 一、线程概述
 * 1.进程:是一个正在执行的程序。每一个进程执行都有一个执行顺序,
 *             该顺序是一个执行路径,或者叫一个控制单元。
 * 2.线程:就是进程中的一个独立的控制单元。线程在控制着进程的执行。

 * 二、创建线程的两种方式
 * 1. 创建线程的第一种方式:继承Thread类。
 *     步骤:(继承-复写-调用)
 * (1)定义类继承Thread类;
 * (2)复写Thread类中的run方法;
 *         目的:将自定义代码存储在run方法中,让线程运行。
 * (3)调用线程的start方法,该方法两个作用:启动线程,调用run方法。
 * 2.创建线程的第二种方式:创建Runnable接口
 *    步骤:(实现接口-覆盖方法-建立对象-对象传递-调用方法)
 * (1)定义类实现Runnable接口;
 * (2)覆盖Runnable接口中的run方法。将线程要运行的代码存放在该run方法中;
 * (3)通过Thread类建立线程对象;
 * (4)将Runnable接口的子类对象作为实际参数传递给Thread类的构造函数。
 * (5)调用Thread类的start方法开启线程并调用Runnable接口子类的run方法。

 * 三、常见面试题
 * 1.实现方式和继承方式有什么区别呢?
 * 答:实现方式好处:避免了单继承的局限性。在定义线程时,建议使用实现方式。
 * 两种方式区别:
 * 继承Thread:线程代码存放在Thread子类run方法中;
 * 实现Runnable:线程代码存放在接口的子类的run方法中。
 * 2.有关懒汉式
 * 特点:延迟加载
 * 问题:多线程访问出现安全问题
 * 解决:同步代码块
 * 问题:低效
 * 解决:双重判断
 * 同步使用的锁:该方法所在类的字节码文件对象。
 * 3.start和run的区别
 * d.start();//开启线程并执行该线程的run方法
 * d.run();//仅仅是对象调用方法,而线程创建了,并没有运行

 * 四、其他知识点
 * 1.同步的前提:
 * (1)必须是有两个或者两个以上的线程;
 * (2)必须是多个线程使用同一个锁。
 *   必须保证同步中只能有一个线程在运行。
 * 2.同步代码块
 * Java对于多线程的安全问题提供了专业的解决方式:同步代码块。
 * synchronized(对象)
 * {
 *     需要被同步的代码
 * }
 * 3.同步函数
 *    同步函数的锁是this;静态同步函数的锁是Class对象。
 * 4.死锁:同步中嵌套同步
 * 5.Join方法&yield方法
 * (1)join:当A线程执行到了B线程的.join()方法时,A就会等待,等B线程都执行完,A才会执行。
 *         join可以用来临时加入线程执行。

 * (2)yield:暂停当前正在执行的线程对象,并执行其他线程。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值