自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 注解和反射

不是程序本身,单可以对程序做出解释可以被其他程序读取(比如编译器)格式:“@注释名字”,还可以添加一些参数值,比如:@SuppressWaenings(value="unchecked")使用:package,class,methed,filed等上面,相当于给他们添加了额外的辅助信息,可通过反射实现访问//注解可以显示赋值,如果没有默认值,就必须给其赋值@MyAnnotation02(name = "老王",age = 1,id = 1)//注解有默认值,可不写参数。

2024-08-22 18:47:19 1035

原创 【多线程】线程池

T> Future<T> submit(Callable<T> task):执行任务,有返回值,一般用来执行Callable。void execute(Runnable command):执行任务/命令,没有返回值,一般用来执行Runnable。2,ExecutorService:真正的线程池接口。1,JDK5.0起提供了相关API:ExecutorService 和 Executirs。3,Executors:工具类,县城成的工厂类,用于创建并返回不同类型的线程池。

2024-08-20 09:34:32 138

原创 【多线程】线程锁

是控制多个线程对共享资源进行访问的工具,锁提供了对共享资源的独占访问,每次只能有一个线程对Lock对象加锁,线程开始访问共享资源之前应该先获得Lock对象。1,JDK5.0开始,java提供了更强大的线程同步机制-----通过显示定义同步锁对象来实现同步,同步锁使用Lock对象来充当。4,使用优先顺序:lock锁----同步代码块(已经进入方法体,分配了相应资源)----同步方法(在方法体之外)3,使用lock锁,JVM将花费更少的时间来调度线程,性能更好,并且具有更好的可扩展性(提供更多的子类)

2024-08-13 18:10:08 526

原创 【多线程】线程安全

2,同步方法中无需指定同步监视器,因为同步方法的同步监视器就是this(本身),或者class。2,优先级高的等待一个优先级低的线程释放锁,就会导致性能倒置。1,Obj可以是任何对象,但是推荐使用共享资源作为同步监视器。4,第二个线程访问、发现同步监视器没有锁,然后锁定并访问。2,第二个线程访问,发现同步监视器被锁定,无法访问。1,第一个线程访问,锁定同步监视器,执行其中代码。synchronized同步方法,加到方法上,锁的是this。3,第一个线程访问完毕,解锁同步监视器。锁不安全的量,增删改的数据。

2024-08-09 15:59:24 240

原创 【多线程】线程状态、优先级、守护线程

6,优先级高不一定先执行(优先级低只是意味着获得调度的概率低,并不是优先级低就不会被调用,这都是看CPU的调度)(也可能调度到优先级低情况的叫性能倒置):如下图测试结果。1,java提供一个线程调度器来监控程序中,启动后,进入就绪状态的所有线程,线程调度器按照优先级决定应该调度哪个线程来执行。3,虚拟机不用等待守护线程执行完毕(如:后台记录操作日志,监控内存,垃圾回收GC等,用户线程执行完毕,就会停止)4,mian方法是主线程,优先级不可改,默认5。2,线程的优先级用数字来表示,范围1-10。

2024-08-09 14:25:44 467

原创 【多线程】线程停止、休眠、礼让、执行

阻塞状态:当调用sleep、wait或同步锁定时,线程进入锁定状态,就是代码不往下执行,阻塞事件解除后,重新进入就绪状态,等待CPU调度执行。就绪状态:当调用start()方法,线程理级进入就绪状态,但不意味着理级调度执行。Join合并线程,待此线程执行完之后,再执行其他线程,其他线程阻塞。dead:线程中断或者结束,一旦进入死亡状态,就不能再次启动。运行状态:进入运行状态,线程才正正执行线程体得代码块。礼让线程,让当前正在执行的线程暂停,但不阻塞。sleep时间达到后线程进入就绪状态。

2024-08-07 17:54:53 628

原创 【多线程】线程创建

4,创建执行服务:ExecutorService ser=Executors.newFixedThreadPool(1);执行结果:可见就有人拿到重复的票,这就存在线程安全问题(多个线程操作同一个资源的情况下,线程不安全,数据紊乱)5,提交执行:Future result1-ser.submit(1);推荐使用:避免单继承局限性,灵活方便,方便同一个线程被多个线程使用。1),调用run()方法就按调用执行,先run再执行下面的。注意:线程开启,不一定立即执行,由CPU调度执行。

2024-07-31 11:55:56 423

原创 关于内部类

一个java类中可以有多个class类,但只能有一个pubilc class。通过外部类来实例化内部类。

2024-07-31 09:47:07 140

原创 抽象类和接口

1,abstract修饰的类为抽象类2,abstract修饰的方法为抽象方法,只有方法名,没有实现3,抽象类的所有方法,继承了他的子类都必须实现它的方法(除非它的子类也抽象)4,抽象类,单继承(extends)5,抽象类不能new,只能靠子类去实现:约束6,抽象类也可以有正常普通方法,抽象方法必须在抽象类中,子类继承抽象方法7,抽象类存在的意义:提高开发效率,可扩展性更强8,抽象类有构造器吗?抽象类可以有构造器:1),构造器可以用来初始化抽象类中的成员变量。

2024-07-30 16:44:45 515

原创 static详解

如图所示调用的Math里面的random()方法,可以通过导入包的方式修改(基本没用上,知道即可)如下图所示导入对应类和类里面的方法,但需要添加一个static,下面就可以直接用方法名了。2,通过执行第二次得出结论:静态代码块只会执行一次。1,执行顺序: 静态代码块>匿名代码块>构造方法。3,由此匿名代码块的功能:可以作为赋初始值时使用。如下图所示案例得出结论。

2024-07-30 15:36:31 169

原创 super详解

注意:如果Person类里面的方法或者属性,变为private修饰的话,则子类不可调用(私有的东西不可以被继承)1,super调用父类的构造方法,必须再子类构造方法的第一行。super:只能再继承条件才可以使用。2,super只能出现再子类的构造方法或者方法中。super:代表父类对象的应用。3,super和this不能同时调用构造方法。this:本身调用者这个对象。this:没有继承也可以使用。super():父类的构造。this():本类的构造。

2024-07-29 15:21:01 481

原创 数组和稀疏数组的转换

第一行为第一个有效数字坐标(行,列,值),即第一个有效数字在原数组处于第几行第几列,实际值是多少,以此构成了稀疏数组。如上图所示左边是原数组,右边是稀疏数组,为了简化原数组,去掉重复无效的0,则简化为右边稀疏数组。从第二行开始记录每个有效数字,8个有效数字,所以除去第一行之外,下面还有8行。左边总共6行7列,有效数字只有8个(其余全是0为无效)则构成了稀疏数组第一行 6,7,8。

2024-07-26 16:31:44 551

原创 冒泡排序笔记

2,第一轮循环完之后,最后一个数就应该是最大的数了,就不用再循环最后一位了,只用循环前面的 ,直到结束,所以再套一层循环,1,两两进行对比,大的放后,小的放前,即对比两数字,如果后面比前面大,则交换位置。第一次就是i=0,让j就循环全部,(范围j

2024-07-26 15:09:55 315

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除