Fight With Me!!!

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

随笔分类 -  多线程

1 2 下一页

ExecutorService——shutdown方法和awaitTermination方法
摘要:ExecutorService的关闭shutdown和awaitTermination为接口ExecutorService定义的两个方法,一般情况配合使用来关闭线程池。 方法简介shutdown方法:平滑的关闭ExecutorService,当此方法被调用时,ExecutorService停止接收新 阅读全文

posted @ 2018-10-21 11:43 nickTimer 编辑

Java CompletableFuture:allOf等待所有异步线程任务结束
摘要:输出: 可以看到f2很快就返回,是因为f2仅耗时2秒。f1需要耗时3秒,因此在f2结束后一秒,f1也返回。此时才执行join后的代码。 作者:zhangphil 来源:CSDN 原文:https://blog.csdn.net/zhangphil/article/details/80670593?u 阅读全文

posted @ 2018-10-21 11:11 nickTimer 编辑

测试多个线程调用同一静态方法(无静态变量)时是否有线程安全问题
摘要:思路: 使用两个线程调用同一静态方法(该静态方法不引用静态变量)、第一个线程被阻塞的时间大于第二个线程被阻塞的时间,若第一个线程与第二个线程的输出结果相同,则两个线程调用同一静态方法存在线程安全问题,若第一个线程于第二个线程的输出结果不同,则两个线程调用同一静态方法不存在线程安全问题; packag 阅读全文

posted @ 2018-01-09 10:04 nickTimer 编辑

一个函数能否被两个线程同时调用
摘要:其实你可以这样想,函数本身只是代码,代码是只读的,无论多少个线程同时调都无所谓(因为只读嘛)。但是函数里面总要用到数据,如果数据属于线程(比如函数参数、局部变量,存在栈上,每个线程都有自己的栈),那么同时调还是没关系,因为用的本线程的数据;但是如果用了一些全局数据,比如全局变量,同时操作一个数据结构 阅读全文

posted @ 2018-01-09 10:03 nickTimer 编辑

在多线程情况下 局部变量与全局变量 哪个比较安全呢
摘要:局部变量是在堆栈中运行。每个运行的线程都有自己的堆栈。别的线程无法访问得到,因此我们说,局部变量是“安全”的。全局变量在堆中,堆是对所有的线程都可见的。因此在两个以上的线程访问全局变量时,就会出现所谓的“不安全”,a线程访问全局变量,赋值为a,然后中间睡眠了0.001秒,在此期间b进程访问了全局变量 阅读全文

posted @ 2018-01-09 10:01 nickTimer 编辑

synchronized 修饰在 static方法和非static方法的区别
摘要:Java中synchronized用在静态方法和非静态方法上面的区别 在Java中,synchronized是用来表示同步的,我们可以synchronized来修饰一个方法。也可以synchronized来修饰方法里面的一个语句块。那么,在static方法和非static方法前面加synchroni 阅读全文

posted @ 2018-01-04 17:19 nickTimer 编辑

对象的notify方法的含义和对象锁释放的三种情况
摘要:1,notify的含义 (1)notify一次只随机通知一个线程进行唤醒 (2)在执行了notify方法之后,当前线程不会马上释放该对象锁,呈wait状态的线程也不能马上获得该对象锁, 要等到执行notify方法的线程将程序执行完 ,也就是退出sychronized代码块后,当前线程才会释放锁, 而 阅读全文

posted @ 2017-10-10 11:34 nickTimer 编辑

线程中释放锁的方式
摘要:# 调用obj的wait(), notify()方法前,必须获得obj锁,也就是必须写在synchronized(obj) {...} 代码段内。# 调用obj.wait()后,线程A就释放了obj的锁,否则线程B无法获得obj锁,也就无法在synchronized(obj) {...} 代码段内唤 阅读全文

posted @ 2017-10-10 11:33 nickTimer 编辑

Java并发编程之——Amino框架
摘要:Amino框架是一个采用无锁方式实现并行计算的框架,可惜的是,网上关于Amino框架的介绍甚少。根据所掌握的资料,稍微总结一下: 1. 锁机制到无锁机制 锁机制可以确保程序和数据的线程安全,但是锁是一种阻塞式的同步方式,无论是ReentrantLock、synchronized,还是Semaphor 阅读全文

posted @ 2017-07-24 09:24 nickTimer 编辑

Synchronized块同步变量的误区
摘要:我们可以通过synchronized块来同步特定的静态或非静态方法。要想实现这种需求必须为这些特性的方法定义一个类变量,然后将这些方法的代码用synchronized块括起来,并将这个类变量作为参数传入synchronized块。下面的代码演示了如何同步特定的类方法: Java代码 public c 阅读全文

posted @ 2017-07-17 14:22 nickTimer 编辑

AtomicInteger简介
摘要:这个类真的非常实用,更重要的是 它确实非常简单: 附上自己的代码,可以自己试试: AtomicInteger,一个提供原子操作的Integer的类。在Java语言中,++i和i++操作并不是线程安全的,在使用的时候,不可避免的会用到synchronized关键字。而AtomicInteger则通过一 阅读全文

posted @ 2017-07-15 12:50 nickTimer 编辑

Java实现主线程等待子线程
摘要:本文介绍两种主线程等待子线程的实现方式,以5个子线程来说明: 1、使用Thread的join()方法,join()方法会阻塞主线程继续向下执行。 2、使用Java.util.concurrent中的CountDownLatch,是一个倒数计数器。初始化时先设置一个倒数计数初始值,每调用一次count 阅读全文

posted @ 2017-06-07 21:45 nickTimer 编辑

多线程访问成员变量与局部变量
摘要:该例子中,HelloThread类实现了Runnable接口,其中run()方法的主要工作是输出"Hello number: "字符串加数字i,并且同时递增i,当i到达50时,退出循环。 main()方法中生成了一个HelloThread类的对象r,并且利用这个一个对象生成了两个线程。 程序的执行结 阅读全文

posted @ 2017-02-06 10:45 nickTimer 编辑

java中sleep()的用法
摘要:Thread.sleep(long millis)和Thread.sleep(long millis, int nanos)静态方法强制当前正在执行的线程休眠(暂停执行),以“减慢线程”。 当线程睡眠时,它睡在某个地方,在苏醒之前不会返回到可运行状态。 当睡眠时间到期,则返回到可运行状态。 线程睡眠 阅读全文

posted @ 2017-02-06 10:35 nickTimer 编辑

多线程访问成员变量与局部变量
摘要:如果一个变量是成员变量,那么多个线程对同一个对象的成员变量进行操作时,它们对该成员变量是彼此影响的,也就是说一个线程对成员变量的改变会影响到另一个线程。 如果一个变量是局部变量,那么每个线程都会有一个该局部变量的拷贝(即便是同一个对象中的方法的局部变量,也会对每一个线程有一个拷贝),一个线程对该局部 阅读全文

posted @ 2017-01-03 16:40 nickTimer 编辑

线程有几种状态
摘要:一般说有3种,但也有说4种的3种:就绪:线程分配了CPU以外的全部资源,等待获得CPU调度执行:线程获得CPU,正在执行阻塞:线程由于发生I/O或者其他的操作导致无法继续执行,就放弃处理机,转入线程就绪队列第四种:挂起:由于终端请求,操作系统的要求等原因,导致挂起。 阅读全文

posted @ 2016-06-11 14:51 nickTimer 编辑

java线程安全理解
摘要:java线程安全理解 如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。比如一个 ArrayList 类,在添加一个元素的时候,它可能会有两步来完成:1. 在 Items[ 阅读全文

posted @ 2016-05-29 16:33 nickTimer 编辑

Java多线程性能优化
摘要:大家使用多线程无非是为了提高性能,但如果多线程使用不当,不但性能提升不明显,而且会使得资源消耗更大。下面列举一下可能会造成多线程性能问题的点: 死锁 过多串行化 过多锁竞争 切换上下文 内存同步 死锁 过多串行化 过多锁竞争 切换上下文 内存同步 下面分别解析以上性能隐患 死锁 关于死锁,我们在学习 阅读全文

posted @ 2016-05-28 16:39 nickTimer 编辑

ExecutorService.execute(Runnable x) 判断是否完成,得到返回值
摘要:public class RunnableTestMain { public static void main(String[] args) { ExecutorService pool = Executors.newFixedThreadPool(2); /** * execute(Runnable x) 没有返回值... 阅读全文

posted @ 2016-01-07 09:16 nickTimer 编辑

并行和并发
摘要:并行:同时运行,从微观的角度讲 并发:同时发生,从宏观的角度讲 并行是真正意义上的同时执行。而并发不是。 阅读全文

posted @ 2016-01-06 22:02 nickTimer 编辑

1 2 下一页
点击右上角即可分享
微信分享提示