摘要:
JUC,即java.util.concurrent. 悲观锁和乐观锁 悲观锁和乐观锁是一种思想。 悲观锁,持有一种悲观的态度,认为会出现很坏的情况,所以,先做预防措施。独占锁是一种悲观锁,synchronized就是一种独占锁。 而乐观锁,则是持有一种持有种乐观的态度,认为不会出现什么问题,有问题了 阅读全文
摘要:
首先,为什么要使用线程池?当我们写helloworld的时,简简单单创建一个线程处理简简单单的任务,那肯定不需要线程池。但是对于需要处理大量请求诸如web服务器这样的应用来说,如果每当一个请求到达就创建一个新线程,然后在新线程中为请求服务。那么,服务器在创建和销毁线程上花费的时间和消耗的系统资源要比 阅读全文
摘要:
Callable返回结果并且可能抛出异常的任务。实现者定义了一个不带任何参数的叫做 call 的方法。 Callable接口类似于Runnable。 示例一: Runnable接口示例: Callable接口示例: Runnable 接口 与 Callable 接口的区别 :任务调用的方法分别是ru 阅读全文
摘要:
先看示例: 上面示例中,定义了一个类变量num1,创建两个线程分别给num1赋随机值然后打印,在内部类A中也对num1的值进行打印。整个过程中,变量num1为所有线程所共享,只要有一个线程将其值改变,其它线程的值也会跟着改变。那么问题就来了,在很多时候,我们在一个线程中处理的数据,仅希望它在当前线程 阅读全文
摘要:
java.util.Timer一种工具,线程用其安排以后在后台线程中执行的任务。可安排任务执行一次,或者定期重复执行。 示例:现在有两个任务A和B,没过5秒执行A,再过3秒执行B,如此交替循环执行。 在实际项目上用到较多Quartz是一个完全由Java编写的开源作业调度框架。 阅读全文
摘要:
在java.util.concurrent.atomic提供了一下关于原子操作的类,这些类包括:AtomicLong、AtomicInteger、AtomicBoolean。以及对数组操作的AtomicIntegerArray、AtomicLongArray。 在线程的初步认识的Demo2,因为原子 阅读全文
摘要:
java 中的线程优先级的范围是1~10,默认的优先级是5。“高优先级线程”会优先于“低优先级线程”执行。优先比不是绝对。 java 中有两种线程:用户线程和守护线程。可以通过isDaemon()方法来区别它们:如果返回false,则说明该线程是“用户线程”;否则就是“守护线程”。 用户线程一般用户 阅读全文
摘要:
interrupt()的作用是中断本线程。本线程中断自己是被允许的;其它线程调用本线程的interrupt()方法时,会通过checkAccess()检查权限。这有可能抛出SecurityException异常。如果本线程是处于阻塞状态:调用线程的wait(), wait(long)或wait(lo 阅读全文
摘要:
在Object.java中,定义了wait(), notify()和notifyAll()等接口。 notify() -- 唤醒在此对象监视器上等待的单个线程。notifyAll() -- 唤醒在此对象监视器上等待的所有线程。wait() -- 让当前线程处于“等待(阻塞)状态”,“直到其他线程调用 阅读全文
摘要:
1.共享、可变。 偷个懒,下面是《java并发编程实战》的一段: 当我第一次看到这段话的时候,确实有点晕。对象的状态:成员变量、static变量以及其他依赖对象的域都是对象的状态。如果一个对象是无状态的(既没有成员变量和static变量,也没有其他依赖对象的域),那么这个对象绝对是线程安全的。共享: 阅读全文