Java(多线程与并发库)
Jsoh
爱学习,爱生活,技术分享,助人帮己!
展开
-
传统多线程技术
线程有2种方式 1、 重写Thread的run方法 例子:new Thread(){ @Override public void run(){ //代码 } }.start(); 2、 Thread中构造方原创 2017-02-20 11:20:26 · 268 阅读 · 0 评论 -
传统定时器Timer
Timer来讲就是一个调度器,而TimerTask呢只是一个实现了run方法的一个类,而具体的TimerTask需要由你自己来实现,例如这样:Timer timer = new Timer();timer.schedule(new TimerTask() { public void run() { System.out.println("112转载 2017-02-20 11:32:18 · 528 阅读 · 0 评论 -
传统线程互斥synchronized
转载:http://blog.csdn.net/luoweifu/article/details/46613015 synchronized是Java中的关键字,是一种同步锁。它修饰的对象有以下几种: 1. 修饰一个代码块,被修饰的代码块称为同步语句块,其作用的范围是大括号{}括起来的代码,作用的对象是调用这个代码块的对象; 2. 修饰一个方法,被修饰的方法称为同步方法,其作用转载 2017-02-20 11:42:19 · 333 阅读 · 0 评论 -
ThreadLocal类应用
每个线程提供不同的变量拷贝 private static ThreadLocal x = new ThreadLocal(); 例子://每个线程提供不同的变量拷贝public class TraditionalThreadLoal { static Integer itCommon = new Integer(0);//每个线程会拥有独自i原创 2017-02-20 15:22:54 · 273 阅读 · 0 评论 -
多线程访问共享对象和数据方法
【1】 如果每个线程执行的代码相同,可以使用同一个Runnable对象,这个Runable对象中有共享数据,例如,售票系统。 Runnable runnable = new Runnable(){ int count; public void run(){原创 2017-02-20 15:43:46 · 810 阅读 · 0 评论 -
原子性操作类AtomicInteger等
JDK1.5之后的java.util.concurrent.atomic包里,多了一批原子处理类。主要用于在高并发环境下的高效程序处理。 他比直接使用传统的java锁机制(阻塞的)有什么好处? 最大的好处就是可以避免多线程的优先级倒置和死锁情况的发生,当然高并发下的性能提升也是很重要的。 补充:该对象在进行增原创 2017-02-20 17:50:16 · 720 阅读 · 0 评论 -
线程池ExecutorService
线程池: 任务提交到线程池,而不是直接交给某线程,线程池拿到任务后,它在内部找空闲的线程进行执行(封装),任务是提交给线程池,一个线程只能执行一个任务,但可以同时向一个线程池提交多个任务。 创建固定大小的线程池 创建缓存线程池 创建单一线程池(如何实现线程死掉后重新启动?)原创 2017-02-20 18:11:28 · 411 阅读 · 0 评论 -
传统线程同步wait(),notify,notifyall()
在Java的Object类中有三个final的方法允许线程之间进行资源对象锁的通信,他们分别是: wait(), notify() ,notifyAll()。调用这些方法的当前线程必须拥有此对象监视器,否则将会报java.lang.IllegalMonitorStateException exception异常。waitObject的wait方法有三个重载方法,其中一个原创 2017-02-20 14:31:19 · 775 阅读 · 0 评论 -
线程锁Lock
Lock是一个接口,知道这个哪些实现类 查看接口实现类通过 在上锁后,只有上锁这部分代码执行完后其他线程才可以执行上锁的代码块lock.lock(); 代码块 lock.unlock(); import java.util.concurre原创 2017-02-21 15:26:34 · 1266 阅读 · 0 评论