多线程
良月柒
一个不羁的码农,终生学习者。
展开
-
Java多线程编程核心技术 —— Java多线程技能
1、多线程是异步的,所以千万不要把Eclipse里代码的顺序当成代码执行的顺序,线程被调用的时机是随机的。 2、如果多次调用start()方法,则会出现Exception in thread "main" java.lang.IllegalThreadStateException。 3、使用继承Thread类的方式创建新线程时,最大的局限就是不支持多继承,因为Java语言的特点就是...原创 2018-11-14 11:02:01 · 183 阅读 · 0 评论 -
Java多线程编程核心技术 —— 对象及变量的并发访问
1、方法内的变量为线程安全。“非线程安全”问题存在于“实例变量”中,如果是方法内部的私有变量,则不存在“非线程安全”问题,所得结果也就是“线程安全”的了。 2、如果多个线程共同访问1个对象中的实例变量,则有可能出现“非线程安全”问题。 3、关键字synchronized取得的锁都是对象锁,而不是把一段代码或方法(函数)当作锁,所以在上面的示例中,哪个线程先执行带synchroniz...原创 2018-11-17 10:20:14 · 285 阅读 · 0 评论 -
Java多线程编程核心技术 —— 线程间通信
线程是操作系统中独立的个体,但这些个体如果不经过特殊的处理就不能成为一个整体。线程间的通信就是成为整体的比用方案之一,可以说,使线程间进行通信后,系统之间的交互性会更强大,在大大提高CPU利用率的同时还会使程序员对个线程任务在处理的过程中进行有效的把控与监督。1、wait使线程停止运行,而notify使停止的线程继续运行。2、尝试一下:出现的原因是没有“对象监视器”,也就是没有...原创 2018-11-21 11:07:55 · 199 阅读 · 0 评论 -
Java多线程编程核心技术 —— Lock的使用
使用ReentrantLock类1、在Java多线程中,可以使用synchronized关键字来实现线程之间同步互斥,但在JDK1.5中新增加了ReentrantLock类也能达到同样的效果,并且在扩展功能上也更加强大,比如具有嗅探锁定、多路分支通知等功能,而且在使用上也比synchronized更加的灵活。 2、关键字synchronized与wait()和notify()/noti...原创 2018-11-27 17:44:53 · 187 阅读 · 0 评论 -
Java多线程编程核心技术 —— 定时器Timer
定时器Timer在JDK库中Timer类主要负责计划任务的功能,也就是在指定的时间开始执行某一个任务。Timer类的主要作用就是设置计划任务,但封装任务的类却是TimerTask类。执行计划任务的代码要放入TimerTask的子类中,因为TimerTask是一个抽象类。 1、方法schedule(TimerTask task,Date time)的作用是在执行的日期执行一次某一...原创 2018-12-06 14:43:22 · 228 阅读 · 0 评论 -
Java多线程&线程池
创建线程的两种方式 在Thread子类覆盖的run方法中编写运行代码 在传递给Thread对象的Runnable对象的run方法中编写代码 总结:查看Thread类的run()方法的源代码,可以看到其实者两种方式都是在调用Thread对象的run方法,如果Thread类的run()方法没有被覆盖,并且为该Thread对象设置了一个Runnable对象,该run方法会调用Runnab...原创 2018-08-13 17:51:19 · 119 阅读 · 0 评论 -
Java多线程编程核心技术 —— 单例模式与多线程
1、立即加载 / “饿汉模式”,立即记载就是使用类的时候已经将对象创建完毕,常见的实现方法就是直接new 实例化。而立即加载从中文的语境来看,有“着急”、“急迫”的含义,所以也称“饿汉模式”。立即加载 / “饿汉模式”是在调用方法前,实例已经被创建了。 2、延迟加载 / “懒汉模式”,延迟加载就是在调用get()方法时实例才被创建,常见的实现方法就是在get()方法中进行new 实例化。而...原创 2018-12-09 15:21:27 · 228 阅读 · 0 评论 -
Java并发:多线程和java.util.concurrent并发包总结
找到一张描述java.util.concurrent包组成结构的类图,正好可以对java多线程中并发这块有一个概览性总结。一、描述线程的类:Runable和Thread都属于java.lang包二、内置锁synchronized属于jvm关键字,内置条件队列操作接口Object.wait()/notify()/notifyAll()属于java.lang包二、提供内存可见性和防止指令重...转载 2018-12-15 17:50:19 · 256 阅读 · 1 评论 -
Java多线程编程核心技术 —— 拾遗增补
1、线程对象在不同的运行时期有不同的状态,状态信息就存在于State枚举类中。线程状态,线程可以处于下列状态之一。NEW(new) 直接尚未启动的线程处于这种状态。 RUNNABLE(runnable)正在Java虚拟机中执行的线程处于这种状态。 BLOCEDE(blocede)受阻塞并等待某个监视器锁的线程处于这种状态。 WAITING(waiting)无限期地等待另一个线程来执行...原创 2018-12-10 18:12:38 · 219 阅读 · 2 评论