
Java并发编程
文章平均质量分 81
爱coding的同学
即使生活过得平淡无奇,也不要忘记最初的梦想
展开
-
高并发下锁的优化
“锁”是最常用的同步方法之一。在高并发的环境下,激烈的锁竞争会导致程序的性能下降。下面是一些关于锁的使用建议,可以把这种副作用降到最低。原创 2023-05-09 21:54:31 · 724 阅读 · 0 评论 -
SimpleDateFormat 的线程安全问题以及ThreadLocal的应用
当看到高亮的那行代码时,就基本可以认定 SimpleDateFormat.format() 不是线程安全的:在多线程环境下,每次调用 format 方法时,calendar 都会将时间设置为传入的时间,这样如果上一个线程的 format 方法还在执行中,肯定会导致输出的结果不正确。加锁是解决了线程安全的问题,也不会因为 new 出太多的 DateFormat 增加 gc 的负担,但是很显然并发性能大大的降低了,如果在并发性要求较高的场合,还不如 new 一个的性能高呢,那有什么办法再优化一下吗。原创 2018-07-12 15:10:54 · 124 阅读 · 2 评论 -
Executor框架
1.在Java 5之后,并发编程引入了一堆新的启动、调度和管理线程的API。Executor框架便是Java 5中引入的,其内部使用了线程池机制,它在java.util.cocurrent 包下,通过该框架来控制线程的启动、执行和关闭,可以简化并发编程的操作。因此,在Java 5之后,通过Executor来启动线程比使用Thread的start方法更好,除了更易管理,效率更好(用线程池实现,节原创 2016-05-14 23:07:18 · 1122 阅读 · 0 评论 -
java多线程中的生产者和消费者队列
本文转自:http://www.cnblogs.com/xrq730/p/4855857.html;Queue是什么队列,是一种数据结构。除了优先级队列和LIFO队列外,队列都是以FIFO(先进先出)的方式对各个元素进行排序的。无论使用哪种排序方式,队列的头都是调用remove()或poll()移除元素的。在FIFO队列中,所有新元素都插入队列的末尾。 Queue中转载 2016-06-04 11:41:03 · 491 阅读 · 0 评论 -
死锁的产生以及如何防止死锁的产生
不多说,先来看一个例子:class Car{ Exception c; private boolean waxOn=false;//waxOn表示的是正在打蜡。 public synchronized void waxed(){//当打蜡完成的时候,就将抛光的线程唤醒 waxOn=true; notifyAll(); }原创 2016-06-03 21:17:43 · 312 阅读 · 0 评论 -
如何通过使用匿名内部类来将线程代码隐藏在类中
/*有时候通过使用内部类来讲线程代码隐藏在类中会很有用*/// 使用一个私有的内部类。 class InnerThread1{ private int countDown=5; private Inner inner; private class Inner extends Thread{// 在这里可能会造成this逃逸的问题。但是由于这原创 2016-05-17 21:41:36 · 418 阅读 · 0 评论 -
Java中线程的俩种方式,编码的变体
1.通过继承thread,得到一个任务类。/*注意在构造器中启动这个线程的话,很容易造成this逃逸的问题,这是要注意的* 这是通过直接集成thread来成为线程。同时在这种情况下,你可以通过调用合适的方法来* 给thread对象赋予具体的名称。*/public class SimpleThread extends Thread { private int countDow原创 2016-05-17 14:57:39 · 404 阅读 · 0 评论 -
Java中线程和进程的一些概念的理解
今天复习熟悉了Java并发的一些概念。 程序:系统要完成的一个任务,就是一个程序; 进程:每个运行中的程序就是一个进程,Windows任务管理器上可以看到每一个进程,Linux下使用ps –e命令可以查看当前运行的所有进程; 线程:每个运行的程序(进程)内部可能会包含多个顺序执行流,每个执行流就可以看做线程。 1. 进程的特性: 1) 独立性:进程是系统中独立存在的实体,它可以转载 2016-05-17 16:06:03 · 3139 阅读 · 0 评论 -
Java中后台线程详细解答
以前从来没有听说过,java中有后台线程这种东西。一般来说,JVM(JAVA虚拟机)中一般会包括俩种线程,分别是用户线程和后台线程。所谓后台线程(daemon)线程指的是:在程序运行的时候在后台提供的一种通用的服务的线程,并且这种线程并不属于程序中不可或缺的部分。因此,当所有的非后台线程结束的时候,也就是用户线程都结束的时候,程序也就终止了。同时,会杀死进程中的所有的后台线程。反过来说,只要有任何原创 2016-05-15 18:17:01 · 2559 阅读 · 0 评论 -
Java多线程中,Join和Interrupt()方法的使用
一个线程的启动比较的简单,就是start()方法就可以了。但是在结束这个线程的时候,不能够使用stop()方法。一般情况下,我们会使用Interrupt()方法。/*当一个线程调用Interrupted()方法的时候,那么就会给这个线程设定一个标志,表明这个线程已经被中断了。* 但是,异常在被捕获的时候,就会清理已经被中断了的这个标志。所以在catch子句中,在异常被捕获的时候,这个标志原创 2016-05-17 23:07:58 · 5961 阅读 · 0 评论 -
Java中Thread类的使用详细解答
以下内容转自:http://www.cnblogs.com/dolphin0520/p/3920357.html下面是具体的内容:Java并发编程:Thread类的使用 在前面2篇文章分别讲到了线程和进程的由来、以及如何在Java中怎么创建线程和进程。今天我们来学习一下Thread类,在学习Thread类之前,先介绍与线程相关知识:线程的几种状态、上下文切换,然后接着介绍Thread类中转载 2016-05-27 18:53:44 · 555 阅读 · 0 评论 -
如何解决java线程中的资源共享的问题
更多相关的文章的链接:http://www.cnblogs.com/chenssy/p/4701027.html;1.资源共享问题的产生:由于需要被访问的资源没有被合理地保护起来,所以在多线程都来访问这个资源的时候,很可能就会出现这个问题,从而导致产生了错误。比如下面的这个例子:其实可以这样理解:你坐在桌子的旁边,正要去叉盘子中的最后的一块事物,当你的叉子就要够着它的时候,这片事物突然就消失了原创 2016-05-18 21:41:09 · 2917 阅读 · 0 评论 -
如何捕获java线程中的逃逸的异常
更多的相关的文章:http://www.cnblogs.com/lao-liang/p/5056176.html;(解释了java中异常的一些分类);http://www.cnblogs.com/freeliver54/archive/2011/10/17/2215423.html;(解释了如何捕获线程中出现的异常)前言:由于线程中的本质特性,使得你不能捕获从线程中逃逸的异常。一旦异常逃出任务原创 2016-05-18 11:43:33 · 2059 阅读 · 1 评论 -
正确理解ThreadLocal
本文中有比较多的内容是来自http://my.oschina.net/lichhao/blog/111362;这个博客的知其然synchronized这类线程同步的机制可以解决多线程并发问题,在这种解决方案下,多个线程访问到的,都是同一份变量的内容。为了防止在多线程访问的过程中,可能会出现的并发错误。不得不对多个线程的访问进行同步,这样也就意味着,多个线程必须先后对变量的值进行访问或者修改,这原创 2016-05-23 19:17:30 · 310 阅读 · 0 评论