美文网首页
2018-09-03 java多线程

2018-09-03 java多线程

作者: 敲代码的小明 | 来源:发表于2018-09-03 22:12 被阅读0次
image.png

1.extends Thread类
定义:
Thread thread=new myThread();
thread.setName("Thread1");
thread.setName("线程1");
thread.start();
run()中可以使用getName()获取线程名

2.implements Runnable类
MyThread myThread=new MyThread();
Thread thread=new Thread(myThread);
thread.setName("线程2");
thread.start();
run中可以用Thread.currentThread().getName()获取线程名

3.sleep()、join()、yield()
sleep():睡眠指定时间,之后再次启动
join():让其他线程等待当前线程执行完成后再执行
yield():让出cpu给其他线程,再次选择的线程随机,可能选回自己

4.wait() 与 notify()/notifyAll()
需要定义一个 privide final Object lockObj=new Object();
对于synchronized(lockObj)中
wait() :此线程让出线程并进入wait set区
notify()/notifyAll():从wait set释放1个/多个线程,重新竞争线程

wait() 与 notify()/notifyAll()不会同时执行

5.退出线程
不建议使用stop(),因为可能停在代码的任意步骤,造成程序执行不完整
建议定义一个boolean,放在while循环中判断
volatile boolean keeprunning =true;

6.其他
synchronized关键字不能被继承。如果在父类中的某个方法使用了synchronized关键字,而在子类中覆盖了这个方法,在子类中的这个方法默认情况下并不是同步的,而必须显式地在子类的这个方法中加上synchronized关键字才可以

synchronized修饰的静态方法锁定的是这个类的所有对象

给class加锁和上例的给静态方法加锁是一样的,所有对象公用一把锁

线程1访问synchronized方式时,线程2可以访问非synchronized方法,包括静态方法

synchronized(this):
等同于在方法中加synchronized
synchronized(lockObj):
当多个线程访问同一个类 A 的方法 A() 的时候。并且,这个方法 A() ,要求一个线程执行完了之后再给另外一个线程去执行。那么,这个方法 A() 就必须加上 synchronized 关键字,或者,在该方法 A() 中写上
synchronized(this//指代当前类A的实例) { }
如果不在声明方法 A() 时,加上 synchronized 关键字,或者,不在方法 A() 中加上 synchronized(this){ }
同步块的时候可以在线程类的 run() 方法内
synchronized(Object //指代类A的实例){
Object.A();
}
实现多线程同时有序访问该同步块内类 A 的方法 A() 的目的。


线程池:
cachedThreadPool.execute(new Runnable())
不手动new线程,而是使用cachedThreadPool管理线程

https://blog.csdn.net/sayoko06/article/details/79579639
https://blog.csdn.net/japson_iot/article/details/80465432
https://www.jianshu.com/p/210eab345423
https://blog.csdn.net/mine_song/article/details/70948223


死锁
https://blog.csdn.net/m0_38126177/article/details/78587845

相关文章

  • 带你搞懂Java多线程(五)

    带你搞懂Java多线程(一)带你搞懂Java多线程(二)带你搞懂Java多线程(三)带你搞懂Java多线程(四) ...

  • 带你搞懂Java多线程(六)

    带你搞懂Java多线程(一)带你搞懂Java多线程(二)带你搞懂Java多线程(三)带你搞懂Java多线程(四)带...

  • 2018-09-03 java多线程

    1.extends Thread类定义:Thread thread=new myThread();thread....

  • Java多线程目录

    Java多线程目录 Java多线程1 线程基础Java多线程2 多个线程之间共享数据Java多线程3 原子性操作类...

  • java多线程--Callable

    **移步[java多线程系列文章]Java多线程(二十二)---LockSupport工具Java 停止线程 一、...

  • android 多线程 — 线程的面试题和答案

    这里都是我从各个地方找来的资料,鸣谢: Java多线程干货系列—(一)Java多线程基础 JAVA多线程和并发基础...

  • 5月份第一周学习安排

    学习内容: java多线程及线程同步的方法(使用) java多线程各种同步方法的原理和优缺点 java多线程设计模...

  • 带你搞懂Java多线程(四)

    带你搞懂Java多线程(一)带你搞懂Java多线程(二)带你搞懂Java多线程(三) 什么是线程间的协作 线程之间...

  • Java基础(六)

    多线程 Java多线程并发 1.1 JAVA 并发知识库 1.2 JAVA 线程实现/创建方式 1.2.1 继承 ...

  • (五) volatile关键字

    Java多线程目录 1 背景 理解Java多线程的内存抽象逻辑请阅读java多线程内存模型,当代操作系统,处理器为...

网友评论

      本文标题:2018-09-03 java多线程

      本文链接:https://www.haomeiwen.com/subject/tmxwwftx.html