java多线程编程
小飞侠-2
我的github地址https://github.com/liujiekasini 欢迎大家分享讨论
展开
-
ConcurrentHashMap--锁的分段技术
ConcurrentHashMap是Java 5中支持高并发、高吞吐量的线程安全HashMap实现。 HashTable容器在竞争激烈的并发环境下表现出效率低下的原因,是因为所有访问HashTable的线程都必须竞争同一把锁,那假如容器里有多把锁,每一把锁用于锁容器其中一部分数据,那么当多线程访问容器里不同数据段的数据时,线程间就不会存在锁竞争,从而可以有效的提高并发访问效率,这就是Conc转载 2016-04-01 11:03:36 · 2250 阅读 · 0 评论 -
Thread.interrupted()方法的陷阱
"font-size:16px;">package test84; public class selfInterrupt { public static void main(String[] args) { Thread.currentThread().interrupt(); // 下面的判断会打印出来这样的语句 Interrupt:false /转载 2016-06-17 11:07:35 · 2853 阅读 · 0 评论 -
ThreadGroup基本用法
①定义线程组 ThreadGroup类中有 2个构造方法,它们用来定义线程组。这 2个构造方法的使用格 式如下: public ThreadGroup(String name); public ThreadGroup(ThreadGroup parent,String name); 比如,创建一个名为fruit的线程组k,可用如下语句: ThreadGr转载 2016-06-17 11:07:12 · 1073 阅读 · 0 评论 -
Java多线程-线程的调度
Java多线程-线程的调度(合并) 线程的合并的含义就是将几个并行线程的线程合并为一个单线程执行,应用场景是当一个线程必须等待另一个线程执行完毕才能执行时可以使用join方法。 join为非静态方法,定义如下: void join(): 等待该线程终止。 void join(long millis): 等待该线程终止的时间最长为 millis 毫秒。 void join(转载 2016-04-01 11:15:04 · 330 阅读 · 0 评论 -
Java多线程-线程的调度(守护线程)
守护线程与普通线程写法上基本没啥区别,调用线程对象的方法setDaemon(true),则可以将其设置为守护线程。 守护线程使用的情况较少,但并非无用,举例来说,JVM的垃圾回收、内存管理等线程都是守护线程。还有就是在做数据库应用时候,使用的数据库连接池,连接池本身也包含着很多后台线程,监控连接个数、超时时间、状态等等。 setDaemon方法的详细说明: public final转载 2016-04-01 11:13:32 · 308 阅读 · 0 评论 -
Java多线程-线程的同步(同步方法)
线程的同步是保证多线程安全访问竞争资源的一种手段。 线程的同步是Java多线程编程的难点,往往开发者搞不清楚什么是竞争资源、什么时候需要考虑同步,怎么同步等等问题,当然,这些问题没有很明确的答案,但有些原则问题需要考虑,是否有竞争资源被同时改动的问题? 在本文之前,请参阅《Java多线程-线程的同步与锁》,本文是在此基础上所写的。 对于同步,在具体的Java代码中需要完成一下两个操作转载 2016-04-01 11:12:50 · 282 阅读 · 0 评论 -
Java多线程-线程的同步(同步代码块)
对于同步,除了同步方法外,还可以使用同步代码块,有时候同步代码块会带来比同步方法更好的效果。 追其同步的根本的目的,是控制竞争资源的正确的访问,因此只要在访问竞争资源的时候保证同一时刻只能一个线程访问即可,因此Java引入了同步代码快的策略,以提高性能。 在上个例子的基础上,对oper方法做了改动,由同步方法改为同步代码块模式,程序的执行逻辑并没有问题。 package cn转载 2016-04-01 11:11:57 · 294 阅读 · 0 评论 -
Java多线程-新特性-线程池
Sun在Java5中,对Java线程的类库做了大量的扩展,其中线程池就是Java5的新特征之一,除了线程池之外,还有很多多线程相关的内容,为多线程的编程带来了极大便利。为了编写高效稳定可靠的多线程程序,线程部分的新增内容显得尤为重要。 有关Java5线程新特征的内容全部在java.util.concurrent下面,里面包含数目众多的接口和类,熟悉这部分API特征是一项艰难的学习过程。目前有转载 2016-04-01 11:11:22 · 383 阅读 · 0 评论 -
Java多线程-新特性-有返回值的线程
在Java5之前,线程是没有返回值的,常常为了“有”返回值,破费周折,而且代码很不好写。或者干脆绕过这道坎,走别的路了。 现在Java终于有可返回值的任务(也可以叫做线程)了。 可返回值的任务必须实现Callable接口,类似的,无返回值的任务必须Runnable接口。 执行Callable任务后,可以获取一个Future的对象,在该对象上调用get就可以获取到Callable任转载 2016-04-01 11:10:45 · 299 阅读 · 0 评论 -
java5 Condition用法--实现线程间的通信
Condition的功能类似在传统线程技术中的Object.wait()和Object.natify()的功能,传统线程技术实现的互斥只能一个线程单独干,不能说这个线程干完了通知另一个线程来干,Condition就是解决这个问题的,实现线程间的通信。比如CPU让小弟做事,小弟说我先歇着并通知大哥,大哥就开始做事。 Condition 将 Object 监视器方法(wait、notify 和转载 2016-04-01 11:09:58 · 267 阅读 · 0 评论 -
同步、异步、阻塞和非阻塞区别
简单点说: 阻塞就是干不完不准回来,一直处于等待中,直到事情处理完成才返回; 非阻塞就是你先干,我先看看有其他事没有,一发现事情被卡住,马上报告领导。 我们拿最常用的send和recv两个函数来说吧... 比如你调用send函数发送一定的Byte,在系统内部send做的工作其实只是把数据传输(Copy)到TCP/IP协议栈的输出缓冲区,它执行成功并不代表数据已经成功的发送出去了转载 2016-04-01 11:09:03 · 323 阅读 · 0 评论 -
java5 ReadWriteLock用法--读写锁实现
读写锁:分为读锁和写锁,多个读锁不互斥,读锁与写锁互斥,这是由jvm自己控制的,你只要上好相应的锁即可。如果你的代码只读数据,可以很多人同时读,但不能同时写,那就上读锁;如果你的代码修改数据,只能有一个人在写,且不能同时读取,那就上写锁。总之,读的时候上读锁,写的时候上写锁! 三个线程读数据,三个线程写数据示例: 可以同时读,读的时候不能写,不能同时写,写的时候不能读。 读的时候上读锁,转载 2016-04-01 11:06:37 · 329 阅读 · 0 评论 -
java5 CountDownLatch同步工具
好像倒计时计数器,调用CountDownLatch对象的countDown方法就将计数器减1,当到达0时,所有等待者就开始执行。 java.util.concurrent.CountDownLatch 一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。用给定的计数初始化CountDownLatch。由于调用了countDown()方法,所以在当前计数到达转载 2016-04-01 11:06:00 · 327 阅读 · 0 评论 -
java5 Exchanger数据交换
Java并发API提供了一种允许2个并发任务间相互交换数据的同步应用。更具体的说,Exchanger类允许在2个线程间定义同步点,当2个线程到达这个点,他们相互交换数据类型,使用第一个线程的数据类型变成第二个的,然后第二个线程的数据类型变成第一个的。 用于实现两个人之间的数据交换,每个人在完成一定的事务后想与对方交换数据,第一个先拿出数据的人将一直等待第二个人拿着数据到来时,才能彼此交换数据转载 2016-04-01 11:05:29 · 408 阅读 · 0 评论 -
阻塞队列--LinkedBlockingQueue
什么叫线程安全? 线程安全就是每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的。 线程安全就是说多线程访问同一代码,不会产生不确定的结果。 并行和并发区别 1、并行是指两者同时执行一件事,比如赛跑,两个人都在不停的往前跑; 2、并发是指资源有限的情况下,两者交替轮流使用资源,比如一段路(单核CPU资源)同时只能过一个人,A走一段后,让给B,B用完继续给A转载 2016-04-01 11:04:30 · 316 阅读 · 0 评论 -
阻塞队列BlockingQueue用法
多线程环境中,通过队列可以很容易实现数据共享,比如经典的“生产者”和“消费者”模型中,通过队列可以很便利地实现两者之间的数据共享。 假设我们有若干生产者线程,另外又有若干个消费者线程。如果生产者线程需要把准备好的数据共享给消费者线程,利用队列的方式来传递数据,就可以很方便地解决他们之间的数据共享问题。但如果生产者和消费者在某个时间段内,万一发生数据处理速度不匹配的情况呢?理想情况下,如果生产转载 2016-04-01 11:04:09 · 270 阅读 · 0 评论