Java并发
baldist
这个作者很懒,什么都没留下…
展开
-
Java并发(五)wait/notify的使用和简单原理
一.使用 class Add implements Runnable { static Integer num=0; Object obj; public Add(Object obj) { this.obj=obj; } @Override public void run() { synchronized (obj) { for (int i=0;i<100;i原创 2020-11-02 16:37:31 · 192 阅读 · 0 评论 -
Java并发(四)synchronized关键字(2)优化
一.轻量级锁 轻量级锁的使用场景: 如果一个对象虽然有多线程要加锁,但加锁的时间是错开的(也就是没有竞争),那么可以使用轻量级锁来优化。轻量级锁对使用者是透明的,即语法仍然是 synchronized。 举例,流程 假设有两个方法同步块,利用同一个对象加锁 static final Object obj = new Object(); public static void method1() { synchronized( obj ) { // 同步块 A method2(); } } publ原创 2020-10-31 16:56:34 · 111 阅读 · 0 评论 -
Java并发(四)synchronized关键字(1)基本原理
一.用法 就记住一点:synchronized修饰非静态方法时,锁是this,即当前的实例对象。synchronized修饰静态方法时,锁是类对象。 .理原创 2020-10-31 15:19:10 · 107 阅读 · 0 评论 -
Java并发(三)Java线程的状态
参考:https://blog.csdn.net/pange1991/article/details/53860651 举例 public static void main(String[] args) throws InterruptedException { Thread t1=new Thread("t1") { @Override public void run() { Syste原创 2020-10-28 15:35:35 · 129 阅读 · 0 评论 -
Java并发(二)常用方法04之setDaemon()
一.介绍 在调用线程A的start()之前,先调用线程A的setDaemon(),可以将线程A设置为守护线程。只要其他非守护线程运行结束了,即使守护线程的代码没有执行完,该守护线程也会强制结束 二.使用 class myRunnable implements Runnable { public void run() { while (true) { try { Thread.sleep(20);原创 2020-10-28 15:11:28 · 277 阅读 · 0 评论 -
Java并发(二)常用方法03之interrupt()相关
一.简介 中断在java中主要有3个方法,interrupt(),isInterrupted()和interrupted()。 interrupt(),在A线程中调用B线程的interrupt()方法,即会向B线程发出信号——线程中断状态已被设置。至于那个线程何去何从,由具体的代码实现决定。 isInterrupted(),用来判断当前线程的中断状态(true or false)。 二.使用及注意点 interrupt() interrupt()不能中断在运行中的线程,它只能改变中断状态而已。 //原创 2020-10-28 14:56:34 · 132 阅读 · 0 评论 -
Java并发(二)常用方法02之join()
一.作用 Thread类中的join方法的主要作用就是同步,它可以使得线程之间的并行执行变为串行执行。在A线程中调用B线程的join方法,A会等待B执行完后,再执行后面的代码。 public static void main(String[] args) throws InterruptedException { Runnable task=()->{ try { Thread.sleep(5000);原创 2020-10-27 10:24:48 · 499 阅读 · 0 评论 -
Java并发(二)常用方法01之sleep()和yield()
一.sleep() Thread.sleep()是Thread类的一个静态方法,使当前线程休眠,进入阻塞状态(暂停执行),如果线程在睡眠状态被中断,将会抛出IterruptedException中断异常。 public static void main(String[] args) { Runnable task=()->{ try { Thread.sleep(10000); } catch原创 2020-10-27 10:10:21 · 138 阅读 · 0 评论 -
Java并发(一)创建线程的方式
创建线程的方式 一.继承Thread类 简单,略。 二.实现Runnable接口 简单,但要注意还有lambda方式的写法: public static void main(String[] args) { Runnable task=()->{ System.out.println("lambda表达式"); }; Thread thread=new Thread(task); thread.start(原创 2020-10-27 09:31:05 · 63 阅读 · 0 评论