前言 代码优化,一个很重要的课题。可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没用,但是,吃的小虾米一多之后,鲸鱼就被喂饱了。代码优化也是一样,如果项目着眼于尽快无BUG上线,那么此时 ...
分类:
编程语言 时间:
2017-09-11 12:22:44
阅读次数:
193
Java线程的同步(七中方法):同步方法同步代码块wait和notify方法使用特殊域变量(volatile)使用重入锁使用ThreadLocal使用阻塞队列BlockingQueue使用原子变量实现线程同步AtomicInteger
分类:
编程语言 时间:
2017-09-09 23:18:44
阅读次数:
193
在高并发的情况下,张三和李四操作了同一个账户,可能会出现的问题是张三和李四取钱都成功了,那么账户的余额就为负数了。 处理这种问题 方法1、使用synchronized(obj)同步代码块来锁定当前的obj对象,obj就是同步监视器,任何时刻只有一个线程可以获得对同步监视器的锁定,线程操作完后释放对象 ...
分类:
编程语言 时间:
2017-09-05 01:40:01
阅读次数:
127
使用单例模式,可以确保在整个系统中仅有该类的一个实例。此外,单例模式的类会提供一个访问类实例的全局访问点。相比使用关键字 new来直接实例化一个对象 ,使用单例模式,将对象的创建"委托"给了类的一个静态方法。在该静态方法中实现对象的实例化并将其返回,同时该方法的执行过程也提供了控制实例化对象的时机。 ...
分类:
其他好文 时间:
2017-08-30 23:39:34
阅读次数:
250
线程八锁 1、当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。 2、当一个线程访问一个实例对象的一个synchronized(this)同步代码块时,另 ...
分类:
编程语言 时间:
2017-08-25 18:47:28
阅读次数:
127
Java中的每一个对象都可以作为锁。1对于同步方法,锁是当前实例对象。2对于静态同步方法,锁是当前对象的Class对象。3对于同步方法块,锁是Synchonized括号里配置的对象。当一个线程试图访问同步代码块时,它首先必须得到锁,退出或抛出异常时必须释放锁。我们常引入对象锁和类锁的概念来有助于了解... ...
分类:
其他好文 时间:
2017-08-24 14:56:27
阅读次数:
184
如果有多个线程访问共享资源,可能会出现当一个线程没有处理完业务,然后另一个线程进入,从而导致共享资源出现不安全的情况。 日常例子:银行取钱,A和B有拥有同一个银行账户,A用存折在柜台取钱,B在取款机取钱。取钱有两个关键步骤: (1)判断账户里的钱的余额是否大于所取钱数 (2)如果大于所取钱数,则账户 ...
分类:
其他好文 时间:
2017-08-24 01:07:50
阅读次数:
168
可见性:一个线程对共享变量值的修改,能够及时地被其他线程看到。 共享变量:如果一个变量在多个线程的工作内存中都存在副本,那么这个变量就是这几个线 程的共享变量。 Java内存模型: ...
分类:
编程语言 时间:
2017-08-22 00:32:15
阅读次数:
243
当多个线程涉及到共享数据的时候,就会设计到线程安全的问题。非线程安全其实会在多个线程对同一个对象中的实例变量进行并发访问时发生,产生的后果就是“脏读”。发生脏读,就是取到的数据已经被其他的线程改过了。什么是线程安全呢?用并发编程实战里面的一段话解释说: 这里需要注意的是多个线程,如果一个线程肯定是线 ...
分类:
其他好文 时间:
2017-08-17 18:34:11
阅读次数:
389
多个进程或线程同时(或着说在同一段时间内)访问同一资源会产生并发(线程安全)问题。解决并发问题可以用锁。 java的内置锁: 每个java对象都可以用做一个实现同步的锁,这些锁称为内置锁。线程进入同步代码块或方法的时候会自动获得该锁,在退出同步代码块或方法时会释放该锁。获得内置锁的唯一途径就是进入这 ...
分类:
编程语言 时间:
2017-08-12 18:57:04
阅读次数:
153