最近做的项目中遇到一个问题:明明用了ConcurrentHashMap,可是始终线程不安全
除去项目中的业务逻辑,简化后的代码如下:
public class Test40 {
public static void main(String[] args) throws InterruptedException {
for (int i = 0; i < 10; i...
分类:
编程语言 时间:
2015-01-04 21:27:56
阅读次数:
241
1 Producer-Consumer PatternProducer-Consumer Pattern主要就是在生产者与消费者之间建立一个“桥梁参与者”,用来解决生产者线程与消费者线程之间速度的不匹配。 当要从某个线程Produccer参与者将数据传输给其它线程Consumer参与者的时候,此时就...
分类:
编程语言 时间:
2015-01-04 19:16:06
阅读次数:
242
1 线程中的几个方法解释Thread.sleep(long毫秒)在指定的时间内让当前线程休眠,将控制权交给其他线程,休眠的线程依旧拥有它所占用的锁,Thread.yield();暂停或者放弃当前正在执行的线程,并且执行其他线程,但是并没有释放该线程所拥有的锁,线程放弃后,让其他相同或者更高线程得以运...
分类:
编程语言 时间:
2015-01-04 19:10:18
阅读次数:
266
前序: Thread-Per-Message Pattern,是一种对于每个命令或请求,都分配一个线程,由这个线程执行工作。它将“委托消息的一端”和“执行消息的一端”用两个不同的线程来实现。该线程模式主要包括三个部分: 1,Request参与者(委托人),也就是消息发送端或者命令请求端 2,Host...
分类:
编程语言 时间:
2015-01-04 19:03:46
阅读次数:
188
1 Read-Write Lock PatternRead-Write Lock Pattern是一种将对于共享资源的访问与修改操作分离,称为读写分离。即访问是reader,修改是write,用单独的线程来处理。可以允许多个reader,但是不允许同时多个写入或者在读的过程中有写入。由于对于实例状态...
分类:
编程语言 时间:
2015-01-04 19:00:59
阅读次数:
200
一、认识多任务、多进程、单线程、多线程要认识多线程就要从操作系统的原理说起。以前古老的DOS操作系统(V 6.22)是单任务的,还没有线程的概念,系统在每次只能做一件事情。比如你在copy东西的时候不能rename文件名。为了提高系统的利用效率,采用批处理来批量执行任务。现在的操作系统都是多任务操作...
分类:
编程语言 时间:
2015-01-04 15:17:14
阅读次数:
284
------- android培训、java培训、期待与您交流! ----------
一.线程的方法
1.yield让出cpu2.setPriority()设置线程的优先级
二.单例设计模式
单例设计模式:保证类在内存中只有一个对象。
如何保证类在内存中只有一个对象呢?
(1)控制类的创建,不让其他类来创建本类的对象。private(2)在本类...
分类:
编程语言 时间:
2015-01-03 15:57:38
阅读次数:
155
下面是死锁情况的一个示例代码package com.qust.demo.money;
class A {
public synchronized void foo(B b) {
System.out.println(Thread.currentThread().getName() + " 进入A的foo");
try {
Thread.sleep(200);
} catch...
分类:
编程语言 时间:
2015-01-03 10:44:01
阅读次数:
248
1.使用sleep()暂停当前线程之后,其他的线程会获得执行机会,但是调用yield()之后,只有优先级和当前线程优先级相同或者更高的线程才能获取执行的机会。 2.使用sleep()会使线程进入阻塞状态,之后在阻塞时间过去之后,线程才能继续执行,但是使用yield()只是强制当前线程进入就绪状态,有可能调用yield()之后,当前线程立即又获得执行机会。 3.使用sleep()需要捕捉...
分类:
编程语言 时间:
2015-01-02 19:59:24
阅读次数:
198