线程
文章平均质量分 59
catoop
性格开朗外向,积极进取充满热情,为人诚恳做事用心,爱好手工实践和大自然。有较强的自学意识创新意识和进取精神。喜欢分享技术收获,虽然是一个知识的搬运工,但对技术孜孜不倦,什么都想搞什么都想做的劲头小伙,善于灵活的运用技术优雅的解决问题,善于表达乐于沟通,一切只因心中那殿力量努力向上。
展开
-
微信公众号5秒内响应success的最佳处理方案
本着对编码精益求精的态度,我的做法是做精准时间处理,我以4秒为限,如果4秒以内可以处理完自己的业务逻辑,则直接返回对应需要响应给用户的消息,反之直接返回success。结合这两点内容我们能很显然的得出结论:如果我们可以通过1来完成那绝对不做2,毕竟2多了一次主动调用微信接口的操作,在一定程度上加大了我们系统的资源消耗。但是在实际业务中,即便是我们的业务处理,正常情况不会超过5秒这么久,但是系统总有可能有例外情况,我们总要考虑可能出现哪怕5%可能超出5秒的情况。以上两份代码,我都做了测试,应该没有问题。原创 2023-10-28 23:17:04 · 774 阅读 · 0 评论 -
Sonar:Either re-interrupt this method or rethrow the “InterruptedException“ that can be caught here.
这么提醒是为了告诉我们,在异常被捕获后,应该重新设置 interrupt 状态为 true,为后续判断 interrupt 状态的地方使用(在本文示例中就是 while 的地方会继续使用),以确保代码逻辑的正确。其实这跟线程 interrupt() 的处理机制有关,当你主动调用 interrupt() 后,会触发 InterruptedException 异常,但是线程在抛出 InterruptedException 异常时,会重置 interrupt 的状态为 false。2、在主线程中调用了子线程的。原创 2023-10-28 19:56:44 · 4699 阅读 · 0 评论 -
Java并发编程:CountDownLatch、CyclicBarrier和Semaphore
在java 1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch,CyclicBarrier和Semaphore,今天我们就来学习一下这三个辅助类的用法。以下是本文目录大纲:一.CountDownLatch用法二.CyclicBarrier用法三.Semaphore用法若有不正之处请多多谅解,并欢迎批评指正。一.CountDownLatch用法...转载 2020-02-07 19:29:46 · 525 阅读 · 0 评论 -
使用MDC为Logback slf4 日志记录线程ID,区分每次执行的会话日志
我们先回想这样一个场景: 在Java开发中,因为业务需求肯定会输出很多日志。在出现问题时,根据输出的日志分析问题。 对于一个访问量很大的网站来说,日志的输出速度是很快的,同样的代码方法被同时调用是很正常的。 那么现在问题来了,我们如何从日志中来区分每一个会话的日志呢?就是我们发现了一个异常,如何知道在这个异常之前对应的一些列日志是什么呢?我们都知道,不管是普通后台代码执行(定时任务这种)还是用原创 2017-05-12 11:18:28 · 11330 阅读 · 2 评论 -
Java线程池例子
在做很多高并发应用的时候,单线程的瓶颈已经满足不了我们的需求,此时使用多线程来提高处理速度已经是比较常规的方案了。在使用多线程的时候,我们可以使用线程池来管理我们的线程,至于使用线程池的优点就不用说了。对于多线程的线程安全处理,这个也非常重要,有些同学还是要多补补课。Java线程池说起来也简单,简单说下继承关系: ThreadPoolExecutor extends AbstractExecuto原创 2015-12-04 23:16:36 · 19046 阅读 · 4 评论 -
ExecutorService线程池
ExecutorService建立多线程的步骤:1。定义线程类class Handler implements Runnable{}2。建立ExecutorService线程池ExecutorService executorService =Executors.newCachedThreadPool();或者int cpuNums = R原创 2012-12-31 14:57:20 · 2143 阅读 · 0 评论 -
Java并发编程:CountDownLatch、CyclicBarrier和Semaphore
在java 1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch,CyclicBarrier和Semaphore,今天我们就来学习一下这三个辅助类的用法。 以下是本文目录大纲: 一.CountDownLatch用法 二.CyclicBarrier用法 三.Semaphore用法 若有不正之处请多多谅解,并欢迎批评指正。...转载 2015-11-16 15:36:55 · 5207 阅读 · 2 评论 -
Java中关键字volatile的作用
用在多线程,同步变量。 线程为了提高效率,将某成员变量(如A)拷贝了一份(如B),线程中对A的访问其实访问的是B。只在某些动作时才进行A和B的同步。因此存在A和B不一致的情况。volatile就是用来避免这种情况的。volatile告诉jvm, 它所修饰的变量不保留拷贝,直接访问主内存中的(也就是上面说的A) 在Java内存模型中,有main memory,每个线程也有自己的memory (例如寄存原创 2015-11-13 20:52:19 · 3609 阅读 · 0 评论 -
sleep与wait的区别
1、来自不同的类这两个方法来自不同的类分别是,sleep来自Thread类,和wait来自Object类。sleep是Thread的静态类方法,谁调用的谁去睡觉,即使在a线程里调用了b的sleep方法,实际上还是a去睡觉,要让b线程睡觉要在b的代码中调用sleep。2、有没有释放锁(释放资源)最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制原创 2012-12-17 09:03:28 · 4935 阅读 · 4 评论 -
多线程编程 -wait(),notify()/notityAll()方法
多线程编程 -wait(),notify()/notityAll()方法先说几点:一、注意:这些方法属于Object,而不属于Thread。 二、notify(); //当调用这个方法时,等待队列里面可能没有等待的线程,那是不是要判断等待对列是否为空才判断执不执行呢,没必要,因为这个耗费不大,就相当于多执行一条语句,所以没必要判断,如果要写判断语句,那么代码还复杂些,所原创 2012-12-17 00:06:51 · 4463 阅读 · 0 评论 -
Java多线程的例子及synchronized关键字锁定对象的用法
该例子所应用场景:一个线程负责生产,多个线程(该例为3个)负责消费;生产者不断的往堆栈中加入数据,消费者不断的从堆栈中取数据。代码如下:package com.xs.mail.thread;import java.util.ArrayList;import java.util.List;class Widget {}class WidgetMaker extends Thr原创 2012-12-15 23:02:36 · 2591 阅读 · 0 评论