多线程
JunSouth
这个作者很懒,什么都没留下…
展开
-
浅谈多线程的数据处理工具(2020-11-29)
阻塞队列BlockingQueue常见方法 方法名 描述 返回值 add() 队尾添加元素,成功返回 true ,失败抛出异常。 boolean offer() 队尾新添加元素。返回true表示添加成功,false表示添加失败,不会抛出异常(可延时操作)。 boolean put() 向队列末尾新添加元素,如果队列已满,当前线程就等待(阻塞线程),响应中断异常。 void remove() 移除头部元素,如果为null则抛出异常,也原创 2020-08-19 16:27:57 · 229 阅读 · 0 评论 -
浅谈线程池
线程池优点降低资源消耗:通过池化技术重复利用已创建的线程,降低线程创建和销毁造成的损耗。 提高响应速度:任务到达时,无需等待线程创建即可立即执行。 提高线程的可管理性:线程是稀缺资源,如果无限制创建,不仅会消耗系统资源,还会因为线程的不合理分布导致资源调度失衡,降低系统的稳定性。使用线程池可以进行统一的分配、调优和监控。 提供更多更强大的功能:线程池具备可拓展性,允许开发人员向其中增加更多的功能。比如延时定时线程池ScheduledThreadPoolExecutor,就允许任务延期执行或定期执行原创 2020-08-17 18:02:14 · 132 阅读 · 0 评论 -
多线程之Future设计模式
/** * Future --> 代表的是未来的一个凭据 * FutureTask --> 将你的调用逻辑进行了隔离 * FutureService --> 桥接 Future和 FutureTask */public class SyncInvoker { public static void main(String[] ar...原创 2019-09-11 12:27:48 · 110 阅读 · 0 评论 -
CompletableFuture小结
Future有一些弊端。比如get时会阻塞线程,线程完成顺序不好控制,拿取结果时容易浪费时间资源等。在 1.8之前,ExecutorCompletionService 也可以完成一些类似工作。CompletableFuture 里的线程是守护线程,关闭主线程即可关闭 CompletableFuture 的线程。CompletableFuture里的方法众多,且多返回Future,可重复、组合...原创 2019-09-03 20:43:55 · 459 阅读 · 0 评论 -
多线程之Work-Thread设计模式
主题思想类似于流水线餐厅模拟的request,可改成自己需要的类,添加自己需要的方法。//请求对象public class Request { private final String name; private final int number; public Request(final String name, final int number) {...原创 2019-07-22 11:39:36 · 1288 阅读 · 0 评论 -
多线程之Two Phase Termination设计模式
public class CounterIncrement extends Thread { private volatile boolean terminated = false; private int counter = 0; @Override public void run() { try { while (!t...原创 2019-07-21 20:51:07 · 181 阅读 · 0 评论 -
生产/消费
产品对象//产品public class Message { public static int data; public Message(int data) { this.data = data; } public int getData() { return data; }}控制中心//核心/...原创 2019-07-21 19:12:57 · 195 阅读 · 0 评论 -
多线程的上下文安全设计
多个线程进行上下文操作时会引起,线程安全问题,可通过ThreadLocal的特性,为每个线程开启副本,解决此类问题。存放信息的对象//存放信息的上下文对象public class Context { //随便设置几个属性 private String name; private String cardId; public void setName(Str...原创 2019-07-21 14:34:43 · 5460 阅读 · 1 评论 -
多线程之Guarded Suspension 挂起监视
多线程发起请求,服务端按顺序处理,需挂起监视。模拟request对象//请求的模拟对象,request.public class Request { //请求者的名字 private final String value; public Request(String value) { this.value = value; } ...原创 2019-07-21 11:42:22 · 186 阅读 · 0 评论 -
读写锁
媒介//要在读写线程间传来传去的,"被操作对象"。public class SharedData { //设置要写的内容 private final char[] buffer; //读写锁 private final Read_Write_Lock lock = new Read_Write_Lock(); //默认初始要读的内容 pu...原创 2019-07-20 22:09:32 · 121 阅读 · 0 评论 -
浅谈多线程(2020-11-29)
线程的创建1.继承Thread重写run()方法。2.new Thread()传入Runnable。3.线程池,传入Runnable或Callable。看到很多人说实现Runnable接口、匿名内部类。我觉得那些都不是。线程的构造1.构造线程对象Thread,默认一个线程名,以Thread-开头,从0开始计数。Thread-0、Thread-1.....2.如果在构造Thread...原创 2019-07-19 19:24:00 · 216 阅读 · 0 评论