
多线程
文章平均质量分 57
淘气的高老板
污,孤傲,高冷,薄情,悲天悯人的高老板
展开
-
写一个方法,并行访问三个http地址,首先获得资源的访问返回,其他的两个终止
import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStreamWriter;import java.net.HttpURLConnection;import java.net.URL;import java.ut...原创 2020-02-28 07:39:03 · 612 阅读 · 0 评论 -
多线程,为每个线程维护变量副本的ThreadLocal,ThreadLocal会造成内存泄漏吗?
1.简单介绍在ThreadLocal类中有一个Map,用于存储每一个线程的变量副本,Map中元素的键为线程对象,而值对应线程的变量副本。下面是示例:public class ThreadLocalTest { /*1通过匿名内部类覆盖ThreadLocal的initialValue()方法,指定初始值 */ private static ThreadLocal<Intege...原创 2017-02-13 23:05:35 · 1559 阅读 · 0 评论 -
关注程序性能(2) jstack, jmap, jvisualvm
jstacklocalhost:jvm_test_dump bao$ jstack 574262017-07-07 10:58:50Full thread dump Java HotSpot(TM) 64-Bit Server VM (25.131-b11 mixed mode):"JMX server connection timeout 14" #14 daemon prio=9 os_pr原创 2017-07-07 11:26:42 · 920 阅读 · 0 评论 -
Java 多线程规范(2)线程池详解
十四,线程池详解线程池示例public class ThreadPoolTool { public static final ThreadPoolExecutor THREAD_POOL_EXECUTOR = new ThreadPoolExecutor( 0, Integer.MAX_VALUE, 60L,原创 2017-07-18 21:51:05 · 1009 阅读 · 0 评论 -
java 多线程规范(1)常用的多线程的场景
一,线程池的作用线程池的作用:线程池作用就是限制系统中执行线程的数量。 根据系统的环境情况,可以自动或手动设置线程数量,达到运行的最佳效果;少了浪费了系统资源,多了造成系统拥挤效率不高。用线程池控制线程数量,其他线程排队等候。一个任务执行完毕,再从队列的中取最前面的任务开始执行。若队列中没有等待进程,线程池的这一资源处于等待。当一个新任务需要运行时,如果线程池中有等待的工作线程,就可以开原创 2017-07-18 21:48:43 · 1012 阅读 · 2 评论 -
Java 并发与多线程规范(4) 自旋锁是可重入的吗?CAS与自旋锁的关系,CAS的ABA问题,以及乐观锁,悲观锁,互斥锁,读写锁的整理
CASCAS,自旋锁跟compare and set有关系,但是并不是CAS就是自旋锁。我们看一段代码:/* 不同线程检测最大值 */ AtomicLong largest = new AtomicLong(); long obsvValue = 0; /* 错误的方式,此更新不是原子性的 */ largest.set(Math.max原创 2017-07-19 15:06:32 · 2059 阅读 · 0 评论 -
Java控制并发 AtomicBoolean Lock Volatile
sychrognized + volatile控制并发的疑问:这里把volatile 关键字去掉会有什么不一样吗???原创 2014-07-17 11:49:48 · 1891 阅读 · 0 评论 -
JAVA 8 并发增强 (2)乐观读
/* * J8添加了StampedLock类,它用来实现乐观读。 首先调用tryOptimisticRead方法,此时会获得一个“印戳”。然后读取值并检查“印戳” * 是否仍然有效(例如其他线程已经获得了一个读锁)。如果有效,就可以使用这个值。如果无效,就会获得一个读锁(它会阻塞所有的写锁) */public class Vector { private int size; priva原创 2016-08-09 14:50:52 · 845 阅读 · 0 评论 -
java 多线程注意事项
一,线程池的概念线程池的作用:线程池作用就是限制系统中执行线程的数量。 根据系统的环境情况,可以自动或手动设置线程数量,达到运行的最佳效果;少了浪费了系统资源,多了造成系统拥挤效率不高。用线程池控制线程数量,其他线程排队等候。一个任务执行完毕,再从队列的中取最前面的任务开始执行。若队列中没有等待进程,线程池的这一资源处于等待。当一个新任务需要运行时,如果线程池中有等待的工作线程原创 2017-02-21 12:42:42 · 4581 阅读 · 0 评论 -
由浅入深写java分布式(1)动态代理
注:关于动态代理和dubbo的例子,代码参考了 点击打开链接的博客和文章public interface HelloService { String hello(String name); } public class HelloServiceImpl implements HelloService { public String hello(String n原创 2017-02-16 17:41:55 · 683 阅读 · 0 评论 -
JAVA 8 并发增强 (3)ConcurrentHashMap改进
/** * ConcurrentHashMap是线性安全的,多个线程不需要对内部结构造成破坏,就可以删除或者添加元素。 * 性能高,允许多个线程并发更新哈希表的不停部分,而不会造成相互堵塞 * ConcurrentHashMap的size是int类型,J8为了应付数量巨大的并发哈希映射,引入了一个mappingCount方法 * 用来返回一个反应大小的long型值 tips:哈希映射将会将原创 2016-08-09 15:43:10 · 3873 阅读 · 0 评论 -
JAVA 8 并发增强(1) 多线程修改某个计数器的方式
Q:如何正确的并发修改一个AtomicLong的值?/*不同线程检测最大值*/AtomicLong largest = new AtomicLong();long obsvValue = 0;/*错误的方式,此更新不是原子性的*/largest.set(Math.max(largest.get(), obsvValue));/* 正确的方式,这种方式比锁快 */long原创 2016-07-29 10:00:02 · 2269 阅读 · 0 评论 -
java i++ 并非原子操作的解决方法——用AtomicInteger
public class Test1 { private static int a = 0; public static void main(String[] args) throws InterruptedException{ System.err.println("LOL"); int n=500000; while(n-->0){ startAdd(); }原创 2014-05-24 16:52:33 · 2429 阅读 · 1 评论 -
Android多线程问题。android.os.NetworkOnMainThreadException
主线程不能进行访问网络等耗时操作原创 2015-12-24 16:30:23 · 512 阅读 · 0 评论 -
Java线程面试题 Top 50
不管你是新程序员还是老手,你一定在面试中遇到过有关线程的问题。Java语言一个重要的特点就是内置了对并发的支持,让Java大受企业和程序员的欢迎。大多数待遇丰厚的Java开发职位都要求开发者精通多线程技术并且有丰富的Java程序开发、调试、优化经验,所以线程相关的问题在面试中经常会被提到。在典型的Java面试中, 面试官会从线程的基本概念问起, 如:为什么你需要使用线程, 如何创建线程,用原创 2015-05-05 20:37:36 · 993 阅读 · 0 评论 -
ConcurrentLinkedQueue 以及 BlockingQueue
import java.util.concurrent.ConcurrentLinkedQueue;import java.util.concurrent.CountDownLatch;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import com.google.com原创 2015-04-27 15:09:34 · 798 阅读 · 0 评论