zoukankan      html  css  js  c++  java
  • Java中的线程

    • 线程的创建方式

      • 继承Thread类
      • 实现Runnable接口
    • 为什么需要定一个类去实现Runnable接口呢?继承Thread类和实现Runnable接口有啥区别呢?

        实现Runnable接口,避免了继承Thread类的单继承局限性。覆盖Runnable接口中的run方法,将线程任务代码定义到run方法中。创建Thread类的对象,只有创建Thread类的对象才可以创建线程。线程任务已被封装到Runnable接口的run方法中,而这个run方法所属于Runnable接口的子类对象,所以将这个子类对象作为参数传递给Thread的构造函数,这样,线程对象创建时就可以明确要运行的线程的任务。

      实现Runnable的好处

        第二种方式实现Runnable接口避免了单继承的局限性,所以较为常用。实现Runnable接口的方式,更加的符合面向对象,线程分为两部分,一部分线程对象,一部分线程任务。继承Thread类,线程对象和线程任务耦合在一起。一旦创建Thread类的子类对象,既是线程对象,有又有线程任务。实现runnable接口,将线程任务单独分离出来封装成对象,类型就是Runnable接口类型。Runnable接口对线程对象和线程任务进行解耦。

    • synchronized关键字和volatile关键字的区别

        synchronized关键字和volatile关键字的比较

        volatile关键字是线程同步轻量级的实现,所以volatile性能肯定比synchronized关键字摇号。但是volatile关键字只能适用于变量,而synchronized关键字可以修饰方法以及代码块。synchronized关键字在JavaSE1.6之后主要包括为了减少获得锁和释放锁带来的性能小号而引入的偏向锁和轻量锁以及各种优化之后执行效率显著提升,实际开发中使用synchronized关键字的场景还是更多一些。

        多线程访问volatile关键字不会发生阻塞,二synchronized关键字可能会发生阻塞

        volatile关键字能保证数据的可见性,但是不能保证数据的原子性。synchronized关键字两者都能保证。

        volatile关键字主要用于解决变量在多个线程之间的可见性,二synchronized关键字解决的是多个线程之间的访问资源的同步性。

  • 相关阅读:
    spring mvc自定义配置 mvc:annotationdriven 东师理想
    spring配置xmemcached及使用 东师理想
    fastjson的简单序列化使用(转) 东师理想
    配置springmvc + simplespringmemcached 东师理想
    利用Spring AOP 更新memcached 缓存策略的实现(二) 东师理想
    springmvc 退出清除session,返回首页,获取当前项目路径,返回前台ajax输出 东师理想
    利用Spring AOP 更新memcached 缓存策略的实现(一) 东师理想
    tomcat7 配置 jstl 东师理想
    Linear Sieve Method for Prime Numbers
    List All Of The Subsets
  • 原文地址:https://www.cnblogs.com/LBJLAKERS/p/11857197.html
Copyright © 2011-2022 走看看