![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java基础
文章平均质量分 77
北海冥鱼未眠
道路在身旁!
展开
-
lock和synchronized对比
lock中的condiction可以指定某一个线程的执行,condition的await方法会释放锁。condition内部维护了一个 等待队列,所有调用condition.await方法的线程会加入到等待队列中,并且线程状态转换为等待状态。如果该线程能够从await()方法返回的话一定是该线程获取了与condition相关联的lock。CAS解决ABA问题:(带版本号的原子操作),可以通过循环实现乐观锁。使用CAS实现锁,底层使用的是Unsafe类,能够保证原子性操作。原创 2022-03-04 11:08:07 · 155 阅读 · 0 评论 -
sleep、interrupt等线程相关方法介绍
另外,打断处于执行在sleep,wait,join等方法的线程会将改线程的打断状态标记为false,表示没有被打断。如果打断的是正常执行的线程,则会将打断状态改成true,但是实际上只是修改了这个标记,并没有真的打断线程的执行,如果我们想让这个打断生效需要自己编写业务逻辑的代码让我们的线程终止。用interrupt方法打断处于park的线程,会将这个线程的打断状态置为true,并且如果再次执行park方法并不能暂停线程的执行,这也是park方法的特点,只能打断打断标志是false的线程。原创 2022-01-17 13:40:25 · 1520 阅读 · 0 评论 -
SimpleDateFormat线程不安全解析以及解决方案
在下面的代码中我们定义了SimpleDateFormat对象被使用的总次数以及同时使用的最大线程的数量。这个establish方法接收了一个参数calendar,而这个对象是一个SimpleDateFormat对象的遍历,多线程使用同一个这个对象,而在这个。是Java中用来日期格式化的一个类,可以将特定格式的字符转转化成日期,也可将日期转化成特定格式的字符串。对象内部的数据在多线程的操作下混乱了,也就导致在进行数据格式化的时候出现了原本不应该出现的数字,也就导致了。对象就会出现安全问题。原创 2022-12-19 21:58:46 · 387 阅读 · 1 评论 -
线程的五种生命状态和线程的常用方法
1:线程的五种生命状态:新建状态、就绪状态、阻塞状态、运行状态、死亡状态。2:线程中常用的方法:setPriority(int newPriority):更改线程的优先级。static void Sleep(long millions):在指定的毫秒数内让当前的线程休眠。该方法不会释放线程对象的锁。void join():等待该线程终止。static void yield():暂停当前正在执行的线程对象。void interrupt():中断线程。boolean isAlive():测试线程是原创 2022-01-08 01:20:31 · 140 阅读 · 0 评论