Java多线程与高并发库
文章平均质量分 82
Nazarite_KakaLuoTo
我是一个性格比较内向,有点技术宅,热爱编程,读书,健身,泰拳等。
展开
-
传统线程同步通信技术
现有如下需求:子线程10次与主线程100次,循环执行50次。实现方法:1、将子线程和主线程中要同步的方法进行封装,加上同步关键字实现同步;2、两个线程间隔运行,添加一个标记变量进行比较以实现相互通信具体代码如下:package tradition;/** * 传统线程间通信,wait和notify */public class TraditionalThr原创 2017-06-29 14:10:21 · 344 阅读 · 0 评论 -
SimpleDateFormat非线程安全
本文参考资料:《Java多线程编程核心技术》 高洪岩 著类SimpleDateFormat主要负责日期的转换与格式化,但在多线程环境中,使用此类容易造成数据转换及处理的不准确,因为SimpleDateFormat类并不是线程安全的。1、出现异常本示例将实现使用类SimpleDateFormat在多线程环境下处理日期但得出的结果却是错误的情况,这也是在多线程环境开发中容易遇到的问原创 2017-11-07 23:04:19 · 550 阅读 · 0 评论 -
传统定时器回顾
传统定时器的创建,直接使用定时器类Timer即可。现在我们模拟定时炸弹的爆炸,Timer相当于定时器对象,TimerTask中的run()方法相当于炸弹,Timer到时间后会触发TimerTask执行run()方法中的内容。示例一:炸弹10秒后触发public static void main(String[] args) { new Timer().schedule(new Tim原创 2017-06-28 11:04:27 · 335 阅读 · 0 评论 -
传统线程技术回顾
注意:该博客是博主在系统学习张孝祥讲师的《Java多线程与并发库高级应用》视频后的笔记。传统是相对于JDK5而言的,线程就是程序的一条执行线索。可以说JDK5是一个革命性的版本。方式一:继承Thread类通过继承Thread类,重写其run()方法,并且运行这个子类的start()方法即可启动线程,具体的代码如下://这里表示的是创建Thread的一个子类Thread thr原创 2017-06-27 22:41:08 · 306 阅读 · 0 评论 -
Java多线程之使用执行器(Executors)(Thinking in Java)
JavaSE5的java.util.concurrent包中的执行器(Executor)将为你管理Thread对象,从而简化了并发编程。Executor在客户端和任务执行之间提供了一个间接层;与客户端直接执行任务不同,这个中介对象将执行任务。Executor允许你管理异步任务的执行,而无须显式地管理线程的生命周期。Executor在JavaSe5/6中是启动任务的优选方法。如果程序中创建了大量原创 2017-07-05 15:07:45 · 576 阅读 · 0 评论 -
Java实现多线程的两种方式
方式一:实现Runnable接口并重写其run()方法原创 2017-07-04 23:20:10 · 1761 阅读 · 1 评论 -
JDK5中的Callable与Future的应用:获取一个线程的运行结果
一、Callable接口与Future使用示例(引自Java编程思想)Runnable是执行工作的独立任务,但是它不返回任何值。如果你希望在任务完成时能够返回一个值,那么可以实现Callable接口而不是Runnable接口。在Java SE5中引入的Callable是一种具有类型参数的泛型,它的类型参数表示的是从方法call()(而不是run())中返回的值,并且必须使用ExecutorSe原创 2017-06-30 15:59:46 · 457 阅读 · 0 评论 -
JDK5线程池与用线程池启动定时器
线程池类似于数据库连接池,创建线程池的具体做法是:先创建多个线程放在线程池中,当有任务需要执行时,从线程池中找一个空闲线程执行任务,任务完成后,并不销毁线程,而是返回线程池,等待新的任务安排。线程池编程中,任务是提交给整个线程池的,并不是提交给某个具体的线程,而是由线程池从中挑选一个空闲线程来运行任务。一个线程同时只能执行一个任务,可以同时向一个线程池提交多个任务。一、线程池的使用示例原创 2017-06-30 15:20:44 · 567 阅读 · 0 评论 -
多个线程之间共享数据的方式探讨
例子:卖票:多个窗口同时卖这100张票,票就需要多个线程共享a、如果每个线程执行的代码相同,可以使用同一个Runnable对象,这个对象中有共享数据。卖票就可以这样做,每个窗口都在做卖票任务,卖的票都是同一个数据。b、如果每个线程执行的代码不同,就需要使用不同的Runnable对象,有两种方式实现具体代码如下:package tradition;/** * 多个线程间共享原创 2017-06-29 14:37:06 · 748 阅读 · 0 评论 -
ThreadLocal类及应用技巧
多个模块在同一个线程中运行时要共享同一份数据,实现线程范围内的数据共享可以用上一节中所用的方法。JDK1.5提供了ThreadLocal类来方便实现线程范围内的数据共享,它的作用就相当于上一节中的Map。每个线程调用全局ThreadLocal对象的set方法,就相当于往其内部的map集合中增加一条记录,key就是各自的线程,value就是各自的set方法传进去的值。在线程结束时可以调用原创 2017-06-29 14:26:11 · 326 阅读 · 0 评论 -
Java线程安全
线程安全概念:当多个线程访问某一个类(对象或方法)时,这个类始终都能表现出正确的行为,那么这个类(对象或方法)就是线程安全的。synchronized:可以在任意对象及方法上面加锁,而加锁的这段代码称为“互斥区”或“临界区”。示例:多个线程访问同一个实例数据1、情形一:方法不加对象锁该情形会出现线程不安全的状态。package com.sunft.base.sync001;/** * 线程安...原创 2018-05-04 00:04:15 · 207 阅读 · 0 评论