• Java 多线程学习笔记


    1. 无论使用哪种方式,最终都必须依靠 Thread 类才能启动多线程。

    2. 启动线程是调用 start 方法,而不是调用 run 方法。

    3. 同一个线程对象不能 start 2 次,否则将会抛异常:java.lang.IllegalThreadStateException。

    4. Thread 类和 Runnable 接口之间在使用上也是有区别的,如果一个类继承了 Thread 类,则不适合于多个线程共享资源,而实现了Runnable 接口,就可以方便地实现资源的共享。

    5. 

    1 MyThread my = new MyThread();
    2 new Thread(my).start();
    3 new Thread(my).start();
    4 new Thread(my).start();

    6.

    1 MyThread mt1 = new MyThread();
    2 MyThread mt2 = new MyThread();
    3 new Thread(mt1).start();
    4 new Thread(mt2).start();

    7. 创建 就绪 运行 阻塞 终止

    8. 线程调用 stop() 方法时或 run() 方法执行结束后,即处于死亡状态。处于死亡状态的线程不具有继续运行的能力。

    9. currentThread() 是 Thread 的一个静态方法,在你不重写父类 Thread 的这个方法的情况下,此时 this.currentThread 跟 Thread.currentThread 无任何区别。

    10. Thread-0

    11. Java 运行时,至少会启动两个线程,一个是 main 线程,另一个是垃圾收集线程。

    12. 主线程有可能比其他线程先执行完。

    13. 主方法的优先级是NORM_PRIORITY。

    14. 并非线程的优先级越高就一定会先执行,哪个先执行将由CPU的调度决定。

    15.

     

    16. 静态块优于主方法的执行,静态块优于构造块的执行。

    17. 访问权限{public|default|protected|private]}[final][static][synchronized]

      返回值类型|void 方法名称(参数类型 参数名称)[throws Exception1,]

    18. synchronized 标注对象中所有参与同步的代码块,如下代码所示:

    1 public synchronized void set(String name, String content){
    2     this.name = name;
    3     this.content = content;
    4 }
    5 public synchronized void get(){
    6     System.out.print(this.name +" ");
    7     System.out.print(this.content +"
    ");
    8 }

      对于以上的代码,如果一个线程访问这个对象的 set 方法,那么这个对象中的 set 方法的代码块同这个对象的 get 代码块同时被锁住,其他的线程不能访问他们的代码块。

    19. 结束线程不最好不要使用stop(),可以使用标志位。

    20. run()方法为线程的主体。

     21. run方法同我们写的其他的方法实在没有什么不同的方法,所以如果你通过对象调用run方法,按照正常的程序逻辑,自然是调用一次,和线程没有一毛钱关系的,对线程的具体实现是在start方法中进行的,通过相关机制,将run方法中的内容另起炉灶,脱离main方法的线程,自己独立拥有一个线程执行。

    22. 实现Runnable接口的类启用线程的方式是借用Thread的方法。

  • 相关阅读:
    程序员高效学习
    红黑树(平衡操作详解)
    【设计模式】JDK源码中用到的设计模式
    pymysql.err.InternalError: (1205, 'Lock wait timeout exceeded; try restarting transaction')错误处理
    UPC:ABS
    洛谷:P1182:数列分段`Section II`
    python:数据库连接操作入门
    2018百度之星资格赛:1002:子串查询
    Educational Codeforces Round 48 (Rated for Div. 2)——A. Death Note ##
    python:pip命令使用
  • 原文地址:https://www.cnblogs.com/ddhjy/p/4132231.html
Copyright © 2020-2023  润新知