摘要: 栈是先入后出,队列是先入先出。根据这个思想,可以用一个栈作为入队,另一个栈作为出队。只要把第一个栈的栈顶的元素压入第二个栈就好了,出队的时候输出第二个栈的栈顶,如果第二个栈的空了就需要不断操作从第一个栈的栈顶压入第二个栈,但是如果第一个栈也空了,那就说明所有元素都输出来了。 最终结果 阅读全文
posted @ 2018-11-29 14:07 如.若 阅读(2782) 评论(0) 推荐(0) 编辑
摘要: 新原子类是 java.util.concurrent 的隐藏精华 十五年前,多处理器系统是高度专用系统,要花费数十万美元(大多数具有两个到四个处理器)。现在,多处理器系统很便宜,而且数量很多,几乎每个主要微处理器都内置了多处理支持,其中许多系统支持数十个或数百个处理器。要使用多处理器系统的功能,通常 阅读全文
posted @ 2018-11-29 13:25 如.若 阅读(193) 评论(0) 推荐(0) 编辑
摘要: Java 语言中的 volatile 变量可以被看作是一种 “程度较轻的 synchronized”;与 synchronized 块相比,volatile 变量所需的编码较少,并且运行时开销也较少,但是它所能实现的功能也仅是 synchronized 的一部分。本文介绍了几种有效使用 volati 阅读全文
posted @ 2018-11-29 13:15 如.若 阅读(423) 评论(0) 推荐(0) 编辑
摘要: 在不只一个线程访问一个互斥的变量时,所有线程都必须使用同步,否则就可能会发生一些非常糟糕的事情。Java 语言中主要的同步手段就是 synchronized 关键字(也称为内在锁),它强制实行互斥,确保执行 synchronized 块的线程的动作,能够被后来执行受相同锁保护的 synchroniz 阅读全文
posted @ 2018-11-29 11:05 如.若 阅读(589) 评论(0) 推荐(0) 编辑
摘要: 为什么要用线程池? 诸如 Web 服务器、数据库服务器、文件服务器或邮件服务器之类的许多服务器应用程序都面向处理来自某些远程来源的大量短小的任务。请求以某种方式到达服务器,这种方式可能是通过网络协议(例如 HTTP、FTP 或 POP)、通过 JMS 队列或者可能通过轮询数据库。不管请求如何到达,服 阅读全文
posted @ 2018-11-29 10:51 如.若 阅读(4921) 评论(0) 推荐(0) 编辑
摘要: 线程安全 众所周知,Java是多线程的。但是,Java对多线程的支持其实是一把双刃剑。一旦涉及到多个线程操作共享资源的情况时,处理不好就可能产生线程安全问题。线程安全性可能是非常复杂的,在没有充足的同步的情况下,多个线程中的操作执行顺序是不可预测的。Java里面进行多线程通信的主要方式就是共享内存的 阅读全文
posted @ 2018-11-29 09:39 如.若 阅读(289) 评论(0) 推荐(0) 编辑