摘要: 线程状态概述 阅读全文
posted @ 2022-11-20 19:33 小白龙白龙马 阅读(21) 评论(0) 推荐(0)
摘要: 解决线程安全问题——Lock锁 解决线程安全问题的三种方案:使用Lock锁java.util.concurrent.locks.Lock接口Lock 实现提供了比使用 synchronized 方法和语句可获得的更广泛的锁定操作。Lock接口中的方法:**void lock()**获取锁。**voi 阅读全文
posted @ 2022-11-20 19:27 小白龙白龙马 阅读(43) 评论(0) 推荐(0)
摘要: 静态同步方法 静态的同步方法锁对象是谁?不能是thisthis是创建对象之后产生的,静态方法优先于对象静态方法的锁对象是本类的class属性-->class文件对象(反射) 阅读全文
posted @ 2022-11-20 19:23 小白龙白龙马 阅读(24) 评论(0) 推荐(0)
摘要: 解决线程安全问题——同步方法 解决线程安全问题的二种方案:使用同步方法 使用步骤:1.把访问了共享数据的代码抽取出来,放到一个方法中2.在方法上添加synchronized修饰符 格式:定义方法的格式 修饰符 synchronized 返回值类型 方法名(参数列表){ 可能会出现线程安全问题的代码( 阅读全文
posted @ 2022-11-20 19:20 小白龙白龙马 阅读(45) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2022-11-20 18:54 小白龙白龙马 阅读(25) 评论(0) 推荐(0)
摘要: 解决线程安全问题——同步代码块 卖票案例出现了线程安全问题 卖出了不存在的票和重复的票 解决线程安全问题的一种方案:使用同步代码块格式: synchronized(锁对象){ 可能会出现线程安全问题的代码(访问了共享数据的代码) } 注意:1.通过代码块中的锁对象,可以使用任意的对象2.但是必须保证 阅读全文
posted @ 2022-11-20 18:48 小白龙白龙马 阅读(75) 评论(0) 推荐(1)
摘要: 阅读全文
posted @ 2022-11-20 15:39 小白龙白龙马 阅读(11) 评论(0) 推荐(0)
摘要: 线程安全问题的代码实现 实现类 package com.itheima.demo06.ThreadSafe; /* 实现卖票案例 */ public class RunnableImpl implements Runnable{ //定义一个多个线程共享的票源 private int ticket 阅读全文
posted @ 2022-11-20 15:35 小白龙白龙马 阅读(16) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2022-11-20 15:29 小白龙白龙马 阅读(20) 评论(0) 推荐(0)
摘要: 匿名内部类方式实现线程的创建 匿名内部类方式实现线程的创建 匿名:没有名字 内部类:写在其他类内部的类 匿名内部类作用:简化代码 把子类继承父类,重写父类的方法,创建子类对象合一步完成 把实现类实现类接口,重写接口中的方法,创建实现类对象合成一步完成 匿名内部类的最终产物:子类/实现类对象,而这个类 阅读全文
posted @ 2022-11-20 15:18 小白龙白龙马 阅读(340) 评论(0) 推荐(0)
摘要: Thread和Runnabled的区别 实现Runnable接口创建多线程程序的好处:1.避免了单继承的局限性 一个类只能继承一个类(一个人只能有一个亲爹),类继承了Thread类就不能继承其他的类 实现了Runnable接口,还可以继承其他的类,实现其他的接口 2.增强了程序的扩展性,降低了程序的 阅读全文
posted @ 2022-11-20 15:11 小白龙白龙马 阅读(24) 评论(0) 推荐(0)
摘要: 创建线程方式二——Runnable 创建多线程程序的第二种方式:实现Runnable接口java.lang.RunnableRunnable 接口应该由那些打算通过某一线程执行其实例的类来实现。类必须定义一个称为 run 的无参数方法。java.lang.Thread类的构造方法 Thread(Ru 阅读全文
posted @ 2022-11-20 15:04 小白龙白龙马 阅读(86) 评论(0) 推荐(0)
摘要: Thread类的常用方法——sleep public static void sleep(long millis):使当前正在执行的线程以指定的毫秒数暂停(暂时停止执行)。 毫秒数结束之后,线程继续执行 public class Demo01Sleep { public static void ma 阅读全文
posted @ 2022-11-20 14:59 小白龙白龙马 阅读(64) 评论(0) 推荐(0)
摘要: Thread类的常用方法——设置线程名称 设置线程的名称:(了解)1.使用Thread类中的方法setName(名字)void setName(String name)改变线程名称,使之与参数 name 相同。2.创建一个带参数的构造方法,参数传递线程的名称;调用父类的带参构造方法,把线程名称传递给 阅读全文
posted @ 2022-11-20 14:58 小白龙白龙马 阅读(280) 评论(0) 推荐(0)
摘要: Thread类的常用方法——获取线程名称 获取线程的名称:1.使用Thread类中的方法getName()String getName()返回该线程的名称。2.可以先获取到当前正在执行的线程,使用线程中的方法getName()获取线程的名称static Thread currentThread()返 阅读全文
posted @ 2022-11-20 14:55 小白龙白龙马 阅读(717) 评论(0) 推荐(0)
摘要: 创建多线程程序的第一种方式——Thred类 创建多线程程序的第一种方式:创建Thread类的子类java.lang.Thread类:是描述线程的类,我们想要实现多线程程序,就必须继承Thread类实现步骤:1.创建一个Thread类的子类2.在Thread类的子类中重写Thread类中的run方法, 阅读全文
posted @ 2022-11-20 14:26 小白龙白龙马 阅读(72) 评论(0) 推荐(0)
摘要: 主线程的概念 主线程:执行主(main)方法的线程 单线程程序:java程序中只有一个线程 执行从main方法开始,从上到下依次执行 JVM处理步骤:1.JVM执行main方法,main方法会进入到栈内存2.VM会找操作系统开辟一条main方法通向cpu的执行路径cpu就可以通过这个路径来执行mai 阅读全文
posted @ 2022-11-20 14:04 小白龙白龙马 阅读(61) 评论(0) 推荐(0)
摘要: 线程调度: 分时调度 所有线程轮流使用 CPU 的使用权,平均分配每个线程占用 CPU 的时间。 抢占式调度 优先让优先级高的线程使用 CPU,如果线程的优先级相同,那么会随机选择一个(线程随机性),Java使用的为抢占式调度。 阅读全文
posted @ 2022-11-20 13:58 小白龙白龙马 阅读(41) 评论(0) 推荐(0)
摘要: 线程:线程是进程中的一个执行单元,负责当前进程中程序的执行,一个进程中至少有一个线程。一个进程中是可以有多个线程的,这个应用程序也可以称之为多线程程序。简而言之:一个程序运行后至少有一个进程,一个进程中可以包含多个线程 阅读全文
posted @ 2022-11-20 13:53 小白龙白龙马 阅读(31) 评论(0) 推荐(0)
摘要: 进程:是指一个内存中运行的应用程序,每个进程都有一个独立的内存空间,一个应用程序可以同时运行多个进程;进程也是程序的一次执行过程,是系统运行程序的基本单位;系统运行一个程序即是一个进程从创建、运行到消亡的过程。 阅读全文
posted @ 2022-11-20 13:45 小白龙白龙马 阅读(25) 评论(0) 推荐(0)
摘要: 多线程的概念 想要设计一个程序,边打游戏边听歌,怎么设计?得使用多进程或者多线程来解决. 并发与并行 并发:指两个或多个事件在同一个时间段内发生。 并行:指两个或多个事件在同一时刻发生(同时发生)。 单CPU系统中只能有一道程序执行,多个程序需要分时的交替运行。 多CPU系统可以并发执行分配程序,实 阅读全文
posted @ 2022-11-20 13:38 小白龙白龙马 阅读(119) 评论(0) 推荐(0)
摘要: 自定义异常类的练习:模拟注册 要求:我们模拟注册操作,如果用户名已存在,则抛出异常并提示:亲,该用户名已经被注册。首先定义一个登陆异常类RegisterException: // 业务逻辑异常 public class RegisterException extends Exception { /* 阅读全文
posted @ 2022-11-20 12:03 小白龙白龙马 阅读(66) 评论(0) 推荐(0)
摘要: 自定义异常类 自定义异常类:java提供的异常类,不够我们使用,需要自己定义一些异常类格式: public class XXXExcepiton extends Exception | RuntimeException{ 添加一个空参数的构造方法 添加一个带异常信息的构造方法 } 注意:1.自定义异 阅读全文
posted @ 2022-11-20 12:01 小白龙白龙马 阅读(143) 评论(0) 推荐(0)
摘要: finally代码块 finally代码块 格式: try{ 可能产生异常的代码 }catch(定义一个异常的变量,用来接收try中抛出的异常对象){ 异常的处理逻辑,异常异常对象之后,怎么处理异常对象 一般在工作中,会把异常的信息记录到一个日志中 } ... catch(异常类名 变量名){ }f 阅读全文
posted @ 2022-11-20 11:58 小白龙白龙马 阅读(70) 评论(0) 推荐(0)
摘要: 异常注意事项:子父类异常 如果父类抛出了多个异常,子类重写父类方法时,抛出和父类相同的异常或者是父类异常的子类或者不抛出异常。 父类方法没有抛出异常,子类重写父类该方法时也不可抛出异常。此时子类产生该异常,只能捕获处理,不能声明抛出 注意:父类异常时什么样,子类异常就什么样。 public clas 阅读全文
posted @ 2022-11-20 11:55 小白龙白龙马 阅读(161) 评论(0) 推荐(0)
摘要: 异常注意事项:finally有return语句 如果finally有return语句,永远返回finally中的结果,避免该情况. public class Demo02Exception { public static void main(String[] args) { int a = getA 阅读全文
posted @ 2022-11-20 11:48 小白龙白龙马 阅读(28) 评论(0) 推荐(0)
摘要: 异常注意事项:多异常捕获处理 多个异常使用捕获又该如何处理呢? 多个异常分别处理。 多个异常一次捕获,多次处理。 多个异常一次捕获一次处理。 package com.itheima.demo03.Exception; import java.util.List; /* 异常的注意事项 */ publ 阅读全文
posted @ 2022-11-20 11:46 小白龙白龙马 阅读(89) 评论(0) 推荐(0)
摘要: Throwable类中3个异常处理的方法 Throwable类中定义了3个异常处理的方法 String getMessage() 返回此 throwable 的简短描述。 String toString() 返回此 throwable 的详细消息字符串。 void printStackTrace() 阅读全文
posted @ 2022-11-20 11:39 小白龙白龙马 阅读(64) 评论(0) 推荐(0)
摘要: 捕获异常try_catch——异常处理的第二种方式 try...catch:异常处理的第二种方式,自己处理异常格式: try{ 可能产生异常的代码 }catch(定义一个异常的变量,用来接收try中抛出的异常对象){ 异常的处理逻辑,异常异常对象之后,怎么处理异常对象 一般在工作中,会把异常的信息记 阅读全文
posted @ 2022-11-20 11:31 小白龙白龙马 阅读(218) 评论(0) 推荐(0)
摘要: 声明异常throws关键字——异常处理的第一种方式 throws关键字:异常处理的第一种方式,交给别人处理作用: 当方法内部抛出异常对象的时候,那么我们就必须处理这个异常对象 可以使用throws关键字处理异常对象,会把异常对象声明抛出给方法的调用者处理(自己不处理,给别人处理),最终交给JVM处理 阅读全文
posted @ 2022-11-20 11:27 小白龙白龙马 阅读(166) 评论(0) 推荐(0)
摘要: Objects非空判断 可以帮我们判断,简化程序Obects类中的静态方法public staticT requireNonNull(T obj):查看指定引用对象不是null。源码: public static <T> T requireNonNull(T obj) { if (obj == nu 阅读全文
posted @ 2022-11-20 11:13 小白龙白龙马 阅读(73) 评论(0) 推荐(0)
摘要: 抛出throw关键字 throw关键字 作用:可以使用throw关键字在指定的方法中抛出指定的异常使用格式: throw new xxxException("异常产生的原因"); 注意:1.throw关键字必须写在方法的内部2.throw关键字后边new的对象必须是Exception或者Except 阅读全文
posted @ 2022-11-20 11:06 小白龙白龙马 阅读(171) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2022-11-20 10:50 小白龙白龙马 阅读(27) 评论(0) 推荐(0)
摘要: 异常的分类 java.lang.Throwable:类是 Java 语言中所有错误或异常的超类。 Exception:编译期异常,进行编译(写代码)java程序出现的问题RuntimeException:运行期异常,java程序运行过程中出现的问题异常就相当于程序得了一个小毛病(感冒,发烧),把异常 阅读全文
posted @ 2022-11-20 01:01 小白龙白龙马 阅读(82) 评论(0) 推荐(0)
摘要: 异常的概念与体系 异常的概念 异常,就是不正常的意思: 异常:指的是程序在执行过程中,出现的非正常的情况,最终会导致JVM的非正常停止。 在Java等面向对象的编程语言中,异常本身是一个类,产生异常就是创建异常对象并抛出了一个异常对象。Java处理异常的方式是中断处理。 异常指的并不是语法错误,语法 阅读全文
posted @ 2022-11-20 00:52 小白龙白龙马 阅读(164) 评论(0) 推荐(0)