- 博客(29)
- 收藏
- 关注
原创 递归算法
递归算法是一种直接或者间接调用自身函数或者方法的算法。Java递归算法是基于Java语言实现的递归算法。递归算法的实质是把问题分解成规模缩小的同类问题的子问题,然后递归调用方法来表示问题的解。递归算法对解决一大类问题很有效,它可以使算法简洁和易于理解。递归算法解决问题的特点:1)递归就是方法里调用自身。2) 在使用递增归策略时,必须有一个明确的递归结束条件,称为递归出口。3)递归算法解题通...
2020-01-20 12:02:51 60
原创 线程 线程池
线程池思想概述线程的复用,执行王一个任务,并不被销毁,而是可以继续执行其他任务。java.util.concurrentExecutors类 (生产线程池的工厂类)线程池:JDK1.5之后提供的java.util.concurrent.Executors:线程池的工厂类,用来生成线程池Executors类种的静态方法:static ExecutorService newFixe...
2020-01-19 15:19:58 87
原创 线程 吃货类测试
包子和包子铺的案例吃货类package day15;/*消费者(吃货)类:是一个线程类,可以继承Thread设置线程任务(run)吃包子对包子的状态进行判断false:没有包子吃货调用wait方法进入等待状态true:有包子吃货吃包子吃货吃完包子修改包子的状态为false没有吃货唤醒包子子铺线程,生产包子*/public class ChiHuo extends...
2020-01-19 13:56:20 84
原创 线程 包子案例
消费者public class BaoZi { //皮 String pi; //陷 String xian; //包子的状态:有true,没有false boolean flag = false;1.生产者(包子铺)类是一个线程类,可以继承Thread设置线程任务(run):生产包子对包子的状态进行判断true:有包子包子铺调用w...
2020-01-19 13:06:36 187
原创 线程 Object线程的wait()参数和nofify()
1.wait(毫秒)不用唤醒等毫秒过去后自己醒来了2.notify()唤醒一个单线程3.notifyAl()唤醒多个线程进入到TimeWaiting(记时等待)有两种方式1.使用sleep(long m)方00法,在毫秒值结束之后,线程睡醒进入到Runnable/Blocked状态2.使用wait(long m)方法如果在毫秒值结束之后,还没有被notify唤醒,就会自动醒来,相除...
2020-01-15 14:53:27 259
原创 线程 线程同步
如何解决线程安全的方法卖票案例出现线程安全问题卖出了不存在的票和重复的票线程同步:方法:1.同步代码块格式synhronized(锁对象){可能会出现线程安全问题的代码(访问了共享数据)注意:1.通过代码块中的锁对象,可以使用任意的对象2.但是必须保证多个线程使用锁对象是同一个3.锁的作用:把同步代码块锁住,只让一个线程在同步代码块中执行}//实现卖票案例public...
2020-01-14 23:39:15 78
原创 线程 线程安全问题
模拟卖票案例创建三个线程,同时开启,对共享的票进行出售public class Demo01Ticket { public static void main(String[] args) { //创建Runnable接口的实现类对象 RunnableImpl run = new RunnableImpl(); //创建Thread类对象,...
2020-01-14 15:25:34 62
原创 线程 匿名内部类方式实现线程的创建
匿名内部类方式实现线程的创建匿名:没有名字内部类:写在其他类内部的类匿名内部类作用:简化代码把子类继承父类,重写父类的方法,创建子类合一步完成把实现类实现类接口,重写接口的方法,创建是西安类对象合成一步完成匿名内部类的最总产物:子类/实现类对象,而这个类没有名字格式:new 父类/接口(){重复父类/接口的方法};//有分号线程的父亲是Thread重写run方法,设置线程任...
2020-01-14 14:16:04 118
原创 线程 Thread和Runnable的区别
实现Runnable接口创建多线程程序的好处:1.避免了单继承的局限性一个类只能继承一个类(一个人只能有一个亲爹),类继承了Thread类就不能继承其他类实现了Runnable接口,还可以继承其他类,实现其他的接口2.增强了程序的扩展性,降低了程序的耦合性(解耦)实现Runnable接口的方式,把设置线程任务和开启了新线程进行分离(解耦)实现类中,重写了run方法:用来设置线程任务创...
2020-01-14 13:25:21 149
原创 线程 Runable重写run方法
创建线程方式二java.lang.RunnableRunnable种没有start()方法,但创建的实现类对象可以调用start()方法1.定义Runnable接口的实现类,并需要重写run()方法,该run()方法的方法体同样时该线程的线程执行体。2.创建Runnable实现类的实例,并以此为实例做Thread的target来创建Thread对象,该Thread对象才是真正的线程对象。...
2020-01-14 12:40:00 4778
原创 线程 Thread类方法
Thread类的sleep()方法sleep()是静态方法可以直接调用sleep方法本身存在异常需要调用try{}catch(){}语句例子 运用sleep()方法的案例public class Demo01Sleep { /* public static void sleep(long mills)使当前正在执行的线程以只当的毫秒暂停(暂时停止执行) 毫秒数结束之...
2020-01-14 10:58:34 88
原创 线程 使用Thread类中的方法setName(名字)
设置线程的名称:(了解)1.使用Thread类中的方法setName(名字)void setName(String name)改变线程名称使之与参与name 相同。2.创建一个带参数的构造方法,参数传递线程的名称,调用父类的带参构造方法,把线程名称传给父类,让父类(Thread) 给子线程起一个名字Thread(String name)分配新的Thread对象。MyThread类方...
2020-01-14 10:40:33 3825
原创 线程 Thread类的常用方法,获取线程名称
线程的名称主线程;mian新线程:Thread-0,Thread-1,Thread-21.创建Thread类的子类对象。2.调用start方法,开启新线程,执行run方法。3.Thread.currentThread()获取当前的的线程,才能获取该getName()。调用myThread类的方法public class Demo01GetThreadName { /* ...
2020-01-14 10:19:44 228
原创 线程 Thread
java.lang.Objectthread类已实现 Runable(接口)线程是程序中的执行线程。Java虚拟机允许应用程序并发地运行多个执行线程。创建多线程程序的第一种方式;创建Thread类的子类java.lang.thread类:是描述线程的类,我们想要实现多线程程序,就必须继承thread类实现步骤:1.创建一个thread类的子类2.在Thread类的子类对象3.创建t...
2020-01-13 14:41:13 81
原创 线程 线程的疑问
并发和并行的区别并发:只两个或多个时间在同一个时间段内发生。并行:指两个或多个事件在同一时刻发生(同时发生)进程和线程的区别**进程:**是指一个内存中运行的应用程序,每一个进程都有独立空间。**线程:**线程是进程中的一个执行单元,,负责但钱进程中程序的执行。一个进程中知道有一个线程。ROM和RAM的区别RAM(random access memory)即随机存储内存,这种存储...
2020-01-13 14:01:21 64
原创 异常 自定义异常类
自定义异常类:java提供的异常类,不够我们使用,需要自己定义一些异常类格式:public class XXXException extends Exception|RuntimeException{添加一个空参的构造方法添加一个带异常信息的构造方法}注意:1.自定义异常类一般都是以Exception结尾,说明该类时一个异常类2.自定义异常类,必须的继承Exception或者Ru...
2020-01-12 12:17:48 138
原创 异常 子父类的异常
子父类的异常:-如果父类抛出了多个异常,子类重写父类方法时,抛出和父类相同的异常或者时父类异常的子类或者不抛出异常。-父类方法没有抛出异常,子类重写父类该方法时也不可排除异常。此时子类产生异常,只能捕获处理,不能声明抛出注意:子类异常时什么样,子类异常就怎么样public class Fu { public void show01() throws NullPointerExce...
2020-01-12 12:03:35 365 1
原创 异常 finally的return语句
如果finally有return语句,永远返回finally中的结果,避免该情况public class Demo02Exception { public static void main(String[] args) { int a = getA(); System.out.println(a);//100 } public static...
2020-01-12 10:47:33 101
原创 异常 多个异常使用捕获
多个异常使用捕获又该如何处理呢?1.多个异常分别处理。//1.多个异常分别处理。 try{ int[] arr = {1,2,3}; System.out.println(arr[3]);//ArrayIndexOutOfBoundsException: 3 }catch (ArrayIndexOutOfB...
2020-01-12 10:34:01 782
原创 异常 Throwable中3个异常的处理方法
Throwable类定义了3个异常处理方法Strng getMessage()返回此throwable的简短描述String toString()返回此throwable迭代纤细消息字符串。void printStackTrace();JVM打印的异常对象,默认此方法,打印的异常信息是最全面的public class Demo01TryCatch {public static void ...
2020-01-11 23:41:24 194
原创 异常 try...catch捕获异常类
一、throws和try…catch的区别1.throws关键字声明方法之后交给虚拟机JVM中断处理 后面的代码没有办法执行,2.try…catch异常处理的第二种方式try{可能产生异常代码}catch(定义一个异常的变量,用来接受try种抛出的异常对象){异常的处理逻辑,异常对象之后,怎么处理异常对象一般工作种,会把异常信息记录到一个日志种}catch(异常类转化 变量名)...
2020-01-11 22:50:47 600
原创 异常 throws关键字
异常处理的第一种方式throws关键字:异常处理的第一种方式,交给别人处理作用当方法内部抛出异常对象的时候,那么我们就必须处理异常对象可以使用throws关键字处理异常对象,把异常对象抛出声明抛出给声明的调用者处理。(自己部处理,给别人处理),最终交给JVM —中断处理修饰符:在方法声明时使用修饰符 返回值类型 方法名 (参数列表) throws XXXException,YYYExc...
2020-01-11 17:16:59 376
原创 异常 Object的静态方法 requireNonNull
object的静态方法对参数做合法性判断源码public static <T> T requireNonNull(T obj){ if(obj == null) throw new NullPointerException(); return obj;例子1public class Demo04Objects { ...
2020-01-11 16:27:42 130
原创 异常 java中throw关键字
throw关键字public class Demo03Throw { public static void main(String[] args) {// int[] arr = null;//Exception in thread "main" java.lang.NullPointerException: 传递的数组为null int[] arr =...
2020-01-11 16:08:44 121
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人