zoukankan      html  css  js  c++  java
  • 3.多线程(同步、异步)

    同步synchronized

        1.同步的概念就是共享资源,如果不是为了共享资源没必要进行同步;同步的目的就是为了线程安全,线程安全只需要满足特性:原子性(同步)、可见性

    1. package demo1;
    2. /**
    3. * Created by liudan on 2017/5/30.
    4. */
    5. public class MyThread3 {
    6. private synchronized void method1() {
    7. try {
    8. System.err.println("线程:" + Thread.currentThread().getName());
    9. Thread.sleep(2000);
    10. } catch (InterruptedException e) {
    11. e.printStackTrace();
    12. }
    13. }
    14. private synchronized void metho2() {
    15. System.err.println("线程:" + Thread.currentThread().getName());
    16. }
    17. public static void main(String[] agrs) {
    18. /**
    19. * 描述:1. a线程先获取t对象的锁,b线程可以异步访问t对象中 metho2() 无 synchronized 修饰的方法
    20. * 2. a线程先获取t对象的锁,b线程争取去获取t对象的锁,这个时候对象使用都了同步 synchronized 修饰方法,a线程 sleep 休眠5秒、metho2()锁还没释放;5秒过后,锁被释放掉;
    21. * b这个时候才真正的拿到t对象的锁,去访问 metho2 方法。
    22. */
    23. MyThread3 t = new MyThread3();
    24. Thread a = new Thread(new Runnable() {
    25. @Override
    26. public void run() {
    27. t.method1();
    28. }
    29. }, "t1");
    30. Thread b = new Thread(new Runnable() {
    31. @Override
    32. public void run() {
    33. t.metho2();
    34. }
    35. }, "t2");
    36. a.start();
    37. b.start();
    38. }
    39. }
    40. 线程:t1
    41. (延迟2秒)synchronized void metho2( 线程:t2
  • 相关阅读:
    Live2D 看板娘
    Live2D 看板娘
    Live2D 看板娘
    Live2D 看板娘
    Live2D 看板娘
    Live2D 看板娘
    Live2D 看板娘
    Live2D 看板娘
    Live2D 看板娘
    重读《深入理解Java虚拟机》三、Java虚拟机执行的数据入口(类文件结构)
  • 原文地址:https://www.cnblogs.com/xxt19970908/p/7337134.html
Copyright © 2011-2022 走看看