一.第一章 1.自定义线程类中实例变量针对其他线程有共享和不共享之分,自定义线程中的变量,如果是继承自thread类,则每个线程中的示例变量的更改,不影响其他线程2.当多个线程去访问一个局部变量是会产生 非线程安全的问题,需要加synchronize 关键字3.isAlive() 方法,判断当前的线程是否处于活动状态,已启动,且未终止.4.sleep() 方法,在指定的毫秒数内,让当前正在执行的线程休眠,但不释放锁5.停止,中断一个线程,可用stop(已废弃),推荐用interrupted()…
1,饿汉模式/单例模式,一开始就新建一个静态变量,后面用getInstance()都是同一个变量 2,懒汉模式/单例模式,在getInstance()才会new一个对象,在第一个有了后不会继续创建 3,懒汉模式有线程不安全问题,用double-check lock方法,(检查两次null,再用同步锁 4,处理同步,1,多个对象,2,ThreadLocal 5,线程出现异常的捕捉方法,1,new 一个UncaughtExcptionHanler()重写里面的uncaughtException(Th…
1,Timer timer = new Timer(true)现在是守护进程 2,timer是按照顺的,没有异步 3,timer方法,schedule(TimerTask task, Date firstTime, long perid)perid就是重复延时,firstTime提前则是执行完立即启动 4,线程内sleep的时间算在perid里面,不会重新算,就是不延时正常,延时接着上一个 5,TimerTask方法,canel取消自己任务 6,Timer方法,canel取消自己任务 7,在外部…
1,ReentrantLock 2,object的wait(),wait(x),notify(),notifyAll(),分别等于Condition的await(),await(x,y),signal(),signalAll() 3,new ReentrantLock(boolean)boolean可以是公平锁或者非公平锁,默认非公平 4,lock方法,getHoldCount()当前线程调用lock()数,即调用(锁)了几次 5,lock方法,getQueueLength()获得等待获得锁的…
1,notify的同步块完了,才会运行wait的同步块 2,interrupt()不是静态方法,用在wait的线程上会有InteruptException,锁也会被释放 3,notify()唤醒的线程是随机的,以前不知道唤醒哪个,了解到notify是object对象有的,哪个用相关的对象锁了,就会解锁哪个 4,object.wait(5000)期间没有notify,自己也会自动唤醒 5,join()public final void,内部使用wait(),相当于在当前线程阻塞的方法,打断会有异常…
作为业务开发人员,能够在工作中用到的技术其实不多.虽然平时老是说什么,多线程,并发,注入,攻击!但是在实际工作中,这些东西不见得用得上.因为,我们用的框架已经把这些事做掉了. 比如web开发,外面有大量的请求进来,按理说,我们应该考虑并发问题.但其实,spring接到请求,分配到controller之后,就已经是线程安全的了,所以我们要做的就是,从controller开始,到最后请求响应结束,保证线程安全即可. 多线程好像有很多东西需要注意,阅读<Java 多线程编程核心技术>后,做个总结,总…
Java多线程编程核心技术 这本书有利于对Java多线程API的理解,但不容易从中总结规律. JDK文档 1. Thread类 部分源码: public class Thread implements Runnable { private volatile char name[]; private int priority; private Thread threadQ; private long eetop; /* Whether or not to single_step this thre…
写这篇博客主要是给猿友们推荐一本书<Java多线程编程核心技术>. 之所以要推荐它,主要因为这本书写得十分通俗易懂,以实例贯穿整本书,使得原本抽象的概念,理解起来不再抽象. 只要你有一点点Java基础,你就可以尝试去阅读它,相信定会收获甚大! 博主之前网上找了很久都没完整pdf电子版的,只有不全的试读版,这里博主提供免费.清晰.完整版供各位猿友下载: http://download.csdn.net/detail/u013142781/9452683 刚刚已经提到,<Java多线程编程核…
线程是操作系统中独立的个体,但这些个体如果不经过特殊的处理就不能成为一个整体.线程间的通信就是成为整体的必用方案之一,可以说,使线程间进行通信后,系统之间的交互性会更强大,在大大提高CPU利用率的同时还会使程序员对各线程任务在处理的过程中进行有效的把控与监督. 在本章中需要着重掌握的技术点如下: 使用wait/notify实现线程间的通信 生产者/消费者模式的实现 方法join的使用 ThreadLocal类的使用 1.等待 / 通知机制 通过本节可以学习到,线程与线程之间不是独立的个体,它们彼…
不使用等待通知机制 实现线程间通信的 疑问分析 2018年04月03日 17:15:08       ayf 阅读数:33 编辑 <java多线程编程核心技术>一书第三章开头,有如下案例: 线程A: package extthread; import mylist.MyList; public class ThreadA extends Thread { private MyList list; public ThreadA(MyList list) { super(); this.list…