
多线程编程
liuzx32
这个作者很懒,什么都没留下…
展开
-
Java线程:线程的调度-休眠
来自:http://lavasoft.blog.51cto.com/62575/221790 Java线程调度是Java多线程的核心,只有良好的调度,才能充分发挥系统的性能,提高程序的执行效率。 这里要明确的一点,不管程序员怎么编写调度,只能最大限度的影响线程执行的次序,而不能做到精准控制。 线程休眠的目的是使线程让出CPU的最简单的做法之一,线程休眠时候,会将CPU资转载 2012-07-22 19:16:01 · 378 阅读 · 0 评论 -
Java多线程中的long和double
在看一些代码的时候,会发现在定义long型和double型的变量时,会在前面加上volatile关键字,当然也会看到在其它原子类型的变量前加上这个关键字,但这里要说的还是有区别的。 在java中,java的内存模型要求,变量的读取操作和写入操作都必须是原子操作的,但是对于非volatile类型的long和double有些不同,因为这两个变量是64位存储,JVM允许将64位的读操作或写操作分转载 2013-07-04 10:45:00 · 1307 阅读 · 0 评论 -
多线程编程示例
一直以来对于多线程有种恐惧恐惧感,不理解它到底是什么回事,感觉挺抽象的,自从听了传智播客的邹老师对于多线程的讲解,我可以很自信地说我多线程方面入门了,特别是邹老师对于多线程有一套独有的方法,那就是画图,通过画图可以很直观地告诉你多线程是什么回事,比如UI线程和主线程,前台线程和后台线程,通过案例的讲解让你发现多线程的美妙。以下简单从如何创建多线程开始。首先来看用单线程的缺点:通过对比单线程和多转载 2012-07-25 22:52:38 · 407 阅读 · 0 评论 -
线程变量安全化ThreadLocal(3)
什么是ThreadLocal?顾名思义它是local variable(线程局部变量)。它的功用非常简单,就是为每一个使用该变量的线程都提供一个变量值的副本,是每一个线程都可以独立地改变自己的副本,而不会和其它线程的副本冲突。从线程的角度看,就好像每一个线程都完全拥有该变量。使用场景To keep state with a thread (user-id, transact转载 2012-07-25 22:31:33 · 551 阅读 · 0 评论 -
ThreadLocal应用的几种误区(4)
最近由于需要用到ThreadLocal,在网上搜索了一些相关资料,发现对ThreadLocal经常会有下面几种误解 一、ThreadLocal是java线程的一个实现 ThreadLocal的确是和java线程有关,不过它并不是java线程的一个实现,它只是用来维护本地变量。针对每个线程,提供自己的变量版本,主要是为了避免线程冲突,每个线程维护自己的版本。彼此独立,修改不会影转载 2012-07-25 22:43:24 · 769 阅读 · 2 评论 -
线程变量隔离化ThreadLocal(2)
早在Java1.2推出之时,Java平台中就引入了一个新的支持:java.lang.ThreadLocal,给我们在编写多线程程序时提供了一种新的选择。使用这个工具类可以很简洁地编写出优美的多线程程序,虽然ThreadLocal非常有用,但是似乎现在了解它、使用它的朋友还不多。 ThreadLocal是什么 ThreadLocal是什么呢?其实ThreadLocal并非是一个线程转载 2012-07-25 22:28:54 · 1039 阅读 · 0 评论 -
Java线程池应用
1.背景 诸如Web 服务器、数据库服务器、文件服务器或邮件服务器之类的许多服务器应用程序都面向处理来自某些远程来源的大量短小的任务。 服务器应用程序中经常出现的情况是:单个任务处理的时间很短而请求的数目却是巨大的。 2.解决方法 构建服务器应用程序的一个过于简单的模型应该是:每当一个请求到达就创建一个新线程,然后在新线程中为请求服务。 那么这种方法的原创 2012-07-21 22:34:19 · 351 阅读 · 0 评论 -
对 Java 中 synchronized(this) 的一些理解和认识
一、当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。 二、然而,当一个线程访问object的一个synchronized(this)同步代码块时,另一个线程仍然可以访问该object中的非synchronized(this)同步代码块。转载 2012-07-22 19:35:38 · 688 阅读 · 0 评论 -
C 和 Java 中sleep和yield的妙用
在java的Thread类中有两个有用的函数,sleep和yield,sleep就是线程睡眠一定的时间,也就是交出cpu一段时间(但并没有释放锁),yield用来暗示系统交出cpu控制权。这两个函数在多线程开发的时候特别有用,可以合理的分配cpu,提高程序的运行效率。对于sleep来说,有一个用法可以代替yield函数即是sleep(0)的形式。调用这个函数也相当于告诉CPU交出cpu的控转载 2012-07-22 19:13:17 · 1210 阅读 · 0 评论 -
Java多线程之sleep 和yield方法
1.sleep() 使当前线程(即调用该方法的线程)暂停执行一段时间,让其他线程有机会继续执行,但它并不释放对象锁。也就是如果有Synchronized同步块,其他线程仍然不同访问共享数据。注意该方法要捕获异常 比如有两个线程同时执行(没有Synchronized),一个线程优先级为MAX_PRIORITY,另一个为MIN_PRIORITY,如果没有Sleep()方法,转载 2012-07-22 18:15:24 · 742 阅读 · 0 评论 -
Memcached学习笔记——windows上初步使用(与java结合)
转自:http://blog.sohu.com/people/!bWFiaXFpYW5nQHNvaHUuY29t/70343632.html 最近一直在做一个项目的前期设计工作,考虑到后期系统的扩展和性能问题也找了很多解决方法,有一个就是用到了数据库的缓存工具memcached(当然该工具并不仅仅局限于数据库的缓存)。先简单的介绍下什么是memcached。 Memcach转载 2012-07-22 17:24:51 · 559 阅读 · 0 评论 -
多线程安全问题案例1 单例注入的类中含非线程安全属性
在50个线程并发的情况下出现数组越界异常,经排查原因为某一个类为单例注入,但含有非线程安全属性。详细如下 1、异常现象:数据越界Xml代码 java.lang.ArrayIndexOutOfBoundsException: 1 at org.apache.oro.text.regex.Perl5Matcher.__findFirst(Unknown Sou转载 2012-07-21 22:32:02 · 944 阅读 · 0 评论 -
java多线程应用中的java.lang.IllegalMonitorStateException异常
首先要了解这个异常为什么会抛出,这个异常会在三种情况下抛出:1>当前线程不含有当前对象的锁资源的时候,调用obj.wait()方法;2>当前线程不含有当前对象的锁资源的时候,调用obj.notify()方法。3>当前线程不含有当前对象的锁资源的时候,调用obj.notifyAll()方法。现在看看代码,假如你去掉synchronized(obj){}这个同步的代码块,运行的结果就会原创 2012-07-22 19:04:00 · 2350 阅读 · 0 评论 -
Future和FureTask的介绍及应用
API:Java代码 public interface Executor { void execute(Runnable command); } public interface ExecutorService extends Executor { Future submit(Callab转载 2015-03-05 16:40:21 · 1283 阅读 · 0 评论