随笔分类 -  JAVA笔记

摘要:在多线程并发的情况下,同一个变量被多个线程调用,那修改的数据就不会每分每秒保持一致。例如,对于某个变量a,线程1对它进行一套操作,线程2又对它进行另一套操作,但如果cpu太忙了,太忙了,假设cpu都用来处理线程1了,线程2对a的值进行修改了,也没有应用到线程1中来。(这只是可能发生的事,不是绝对发生 阅读全文
posted @ 2019-12-09 10:58 Scorpicat 阅读(141) 评论(0) 推荐(0)
摘要:线程通信 图片来源:尚学堂ppt 线程通信模型 管程法 案例一 没有加线程通信: 情景设置:工厂(生产者)生产馒头,仓库(缓冲器)存储馒头,商店(消费者)从仓库取走馒头,加线程安全,不加线程通信 package _20191206; /** * 生产者消费者模型:管程法 * @author TEDU 阅读全文
posted @ 2019-12-06 14:22 Scorpicat 阅读(289) 评论(0) 推荐(0)
摘要:一线程持有a资源,需要获取b资源才释放a资源。 二线程持有b资源,需要获取a资源才释放b资源。 造成死锁。 下面举个例子: 两个女人化妆,需要镜子和口红,两个人一个先拿镜子,再拿口红,另一个先拿口红,再拿镜子 /** * @author TEDU * 死锁出现的情况多是锁套锁。 */ public 阅读全文
posted @ 2019-12-06 13:42 Scorpicat 阅读(158) 评论(0) 推荐(0)
摘要:在java中,有一个专门用来处理并发容器的包:java.util.concurrent 包,其中有一个CopyOnWriteArrayList类,相当于ArrayList的线程安全版。 我们可以使用它代替ArrayList,就无需加synchronized来锁线程了。 注:本节内容了解即可(面试用) 阅读全文
posted @ 2019-12-06 12:18 Scorpicat 阅读(131) 评论(0) 推荐(0)
摘要:一个小总结 Synchronized与同步块的形象比喻: 我们以去商店买衣服为比喻:synchrnized锁方法就好比去一家商店买衣服,一次只能进一个人,买完出来才能进第二个人。而同步块则是在整个买衣服流程的关键之处:试衣间换衣服,结账(假设只有一个试衣间,只有一个收银台)时做了排队处理,排队使得数 阅读全文
posted @ 2019-12-05 12:02 Scorpicat 阅读(307) 评论(0) 推荐(0)
摘要:问题如图 点击 Attach Source 解决方法 下载src.zip包,src包地址:https://pan.baidu.com/s/1oAqqqHO 选择此src包即可 阅读全文
posted @ 2019-12-05 10:12 Scorpicat 阅读(186) 评论(0) 推荐(0)
摘要:守护线程概念 线程分为守护线程与用户线程 虚拟机必需确保用户线程得以执行完毕 虚拟机无需确认守护线程执行完毕 守护线程如后台日志记录,内存监控之类 英文为:daemon 我们需要强调的就是:虚拟机无需等待守护线程执行完毕,当所有用户线程执行完毕后,程序就关闭。 讲一个进程设置为线程的方法为: 线程对 阅读全文
posted @ 2019-12-04 17:01 Scorpicat 阅读(165) 评论(0) 推荐(0)
摘要:优先级概念 线程的优先级可以让线程获得高概率或低概率的cpu调度机会。不是绝对的优先,只是高优先级会被优先调用。 优先级为1-10,最低为1,最高为10,默认为5。可以自行设置值。 设置优先级必需在线程start()之前。 Thread类的优先级常量 MAX_PRIORITY 10 MIN_PRIO 阅读全文
posted @ 2019-12-04 16:36 Scorpicat 阅读(197) 评论(0) 推荐(0)
摘要:线程的五大状态 线程的五大状态为: 新生状态 就绪状态 运行状态 阻塞状态 死亡状态 图示一: 图示二: 改变线程状态的方法 新生线程 :new Thread() 就绪状态:start()方法进入就绪状态,阻塞结束进入就绪状态 运行状态:通过cpu调度算法将就绪状态的线程按优先级进行调用运行 手动停 阅读全文
posted @ 2019-12-03 17:38 Scorpicat 阅读(525) 评论(0) 推荐(0)
摘要:匿名内部类 参考:https://www.runoob.com/w3cnote/java-inner-class-intro.html 进入后搜索匿名内部类。 函数型接口 函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。 例如,我们 阅读全文
posted @ 2019-12-03 17:09 Scorpicat 阅读(230) 评论(0) 推荐(0)
摘要:引入 在前一节我们学习了实现Runnable接口创建线程,其中提到只使用一次对象时使用匿名对象,如: new Thread(new xxx().start();//xxx为实现了Runnable的类 Thread就是一个静态代理,使用了这种方法,xxx类无需继承Thread类,就可以通过Thread 阅读全文
posted @ 2019-12-03 15:21 Scorpicat 阅读(198) 评论(0) 推荐(0)
摘要:线程的流程 线程的创建 有三种方法,重点掌握前两种: 继承Thread类 实现Runnable接口(推荐使用:避免单继承的局限性) 实现Callable接口 根据java的思想,要少用继承,多用实现。 第一种:继承Thread类 继承Thread的类必需重写run方法,run方法即为线程体。 当程序 阅读全文
posted @ 2019-12-03 09:44 Scorpicat 阅读(262) 评论(0) 推荐(0)
摘要:案例 设置一个异常:非法年龄异常,当Person类的setAge方法检测到参数age的值大于100或小于0时,抛出该异常。 需要注意的地方 自定义异常继承自Exception或RuntimeException 异常后显示的自定义信息定义在构造方法中,如下面代码 异常要声明在方法后面:方法() thr 阅读全文
posted @ 2019-12-02 20:39 Scorpicat 阅读(318) 评论(0) 推荐(0)
摘要:自动转换顺序:byte->short->int->long->float->double ,char->int byte short char只要参与运算,就会自动转为int型进行运算。 如代码: public class TypeChange { public static void main(S 阅读全文
posted @ 2019-12-02 16:45 Scorpicat 阅读(111) 评论(0) 推荐(0)
摘要:引用声明:部分内容来自文章:http://c.biancheng.net/view/1100.html 枚举Enum类是java.lang下的一个类。 枚举的命名规范 枚举名:大驼峰 枚举值:全大写,下划线分割 枚举的声明 enum-modifiers enum enumname:enum-base 阅读全文
posted @ 2019-12-02 15:43 Scorpicat 阅读(1060) 评论(0) 推荐(0)
摘要:本文讲讲几个Collection的常用方法,这些方法在它的子类中也是很常用的,因此这里先拿出来单独讲解,以后它的子类中的这些方法就不再重复讲解。 几个常用方法: add() 添加一个元素 size() Object[] toArray() 返回一个Object数组 isEmpty() remove( 阅读全文
posted @ 2019-12-01 22:29 Scorpicat 阅读(224) 评论(0) 推荐(0)
摘要:alt+shift+w : 调出一个菜单,可以调出outline与package explorer alt+shift+s:快速构造方法 ctrl+t:查看继承 ctrl+shift+f:调整格式,或者,右键source->format 快速更改指定的所有变量:光标在变量,alt shift r 即 阅读全文
posted @ 2019-12-01 22:17 Scorpicat 阅读(176) 评论(0) 推荐(0)
摘要:泛型类泛型演示 泛型可以指定某个特定的类,当使用这个类时,可以设定只传入某种类型的数据。 package cn.xxx.Collection; public class CollectionTest { public static void main(String[] args) { MyColle 阅读全文
posted @ 2019-11-29 16:40 Scorpicat 阅读(134) 评论(0) 推荐(0)
摘要:copy方法 package com.sxt.copy; import java.io.File; import java.io.IOException; import java.net.URL; import org.apache.commons.io.FileUtils; import org. 阅读全文
posted @ 2019-11-28 16:35 Scorpicat 阅读(537) 评论(0) 推荐(0)
摘要:Commons包的API:自己查吧懒得传云 Commons包的导入方法 Commons是一个java的IO开源工具,导入方法: 从apache.org下载commons包 解压 copy其中的commons-io-2.6-sources.jar与commons-io-2.6.jar 在eclipse 阅读全文
posted @ 2019-11-28 10:37 Scorpicat 阅读(741) 评论(0) 推荐(0)