Java多线程
文章平均质量分 76
laoXingyao
这个作者很懒,什么都没留下…
展开
-
Java多线程——同步与异步的区别
多线程并发时,多个线程同时请求同一个资源,如果没有同步机制,必然导致此资源的数据不安全。比如说A线程修改了B线程的处理的数据,而B线程又修改了A线程处理的数据。显然这是由于全局资源造成的,有时为了解决此问题,优先考虑使用局部变量,退而其次使用同步代码块,出于这样的安全考虑就必须牺牲系统处理性能,在多线程并发时资源挣夺最激烈的地方实现了线程的同步机制。 1. 同步:A线程要请求...翻译 2018-05-25 10:11:39 · 446 阅读 · 0 评论 -
Java多线程——synchronized同步与volatile变量
一、synchronized同步方法1. “非线程安全”其实是在多个线程对同一对象中的实例变量进行并发访问时发生的。2. “非线程安全”问题存在于“实例变量”中,如果是方法内部的局部变量,则不存在“非线程安全”问题,永远都是线程安全的,因为方法内部的局部变量是私有的,所以不存在数据共享。为什么方法内部的局部变量是私有的,不存在数据共享? 因为每当启用一个线程时,JVM就为他分配一个J...原创 2018-05-25 14:27:41 · 2806 阅读 · 0 评论 -
Java多线程——Thread与Runnable的区别和实现
一、区别 Thread与Runnable都能创建新线程,这两者实际上并没有本质的区别。由于Java只能继承一个类,但可以实现多个接口。所以当我们使用继承Thread的方法创建多线程,那就不能继承其他类。当需要继承其他类的时候,我们应该采用实现Runnable接口来实现多线程。二、实现 分别使用Thread与Runnable模拟售票功能1、Thread实现/** *...原创 2018-05-22 12:21:26 · 233 阅读 · 0 评论 -
Java多线程——Thread方法之currentThread(),isAlive(),sleep(),getId(),interrupt(),yiel()方法解析
1. currentThread()方法:返回调用当前代码段的线程,即返回当前线程。——static 2. isAlive()方法:判断当前的线程是否处于活动状态。 活动状态就是线程已经启动且尚未终止,线程处于正在运行或准备开始运行的状态。 3. Thread.currentThread()与this的区别:前者是指当前线程,后者是指当前线程对象。两者有时相同,有时不同,...原创 2018-05-23 13:10:00 · 1432 阅读 · 0 评论 -
Java多线程——线程间通信之wait(),notify()方法,生产者与消费者模式实现,管道流
1. wait()方法:使当前执行代码的线程进行等待。 在调用wait()之前,线程必须获得该对象的对象级别锁,即只能在同步方法或同步块中调用wait()方法(否则会抛出IllegalMonitorStateException异常)。在执行wait()方法后,当前线程释放锁。在从wait()返回之前,线程与其他线程竞争重新获得锁。package threadCommunicatio...原创 2018-05-28 22:37:05 · 651 阅读 · 0 评论 -
Java多线程——System.currentTimeMillis()与System.nanoTime()的区别
1. System.currentTimeMillis()返回当前时间,是从1970.1.1 UTC 零点开始到当前时刻的时间差,单位为毫秒(ms),可根据currentTimeMillis()返回的时间戳来计算当前日期,进而和Date进行转换。2. System.nanoTime()返回随机时间种子,单位为毫微妙(即纳秒ns),时间精度比currentTimeMillis()高,但是不能用来计算...原创 2018-05-24 18:36:43 · 2059 阅读 · 0 评论 -
Java多线程——线程间通信之join()方法
1. join()方法:当前线程 等待 线程对象 销毁。比如说: j.join(); //就是当前线程 等待 线程对象(j) 销毁。package threadCommunication;public class JoinTest extends Thread { @Override public void run() { try { ...原创 2018-06-01 20:19:36 · 343 阅读 · 0 评论