java_day15_线程,匿名内部类,线程安全

线程

一,单例模式

  public class Single {

    private static Single ourInstance = new Single();

    //构造方法私有,Single对象只能被new一次

    public static Single getInstance() {

      return ourInstance

    }

    private Single() {
    }

  }

二,线程

  1,线程是为了让计算机在同一时间做不同的事,本质是cpu等资源在不断的切换线程的执行

  2,启动线程使用线程对象的start方法

  3,创建线程的方式一:子类继承覆写方法方式

    public class ThreadA extends Thread {

      @Override

      public void run(){

      需要执行的代码块

      }

    }

  4,创建线程的第二种方式:Runnable接口的实现类通过Thread的构造方法传入线程

    Runnable的实现类:

      public class RunnableC inmplements Runnable {

        @Override

        public void run() {

        需要执行的代码块

        }

      }

    Thread通过构造方法传入实现类

      RunnableC runnableC = new RunnableC( ); 

      Thread c = new Thread (runnableC)

      c.start( );

三,线程的变种形式

  1,匿名对象:直接new出对象,而不给这个对象变量名,只有一次调用这个方法的机会

    new ThreadA().start();

    

  2,匿名内部类:没有类名,在构造方法的小括号后加上{},那么这个{}就代表一个类,这样在{}中就可覆写父类Thread的方法,例 Thread(){};  {}相当于继承了父类Thread的子类

    Thread a = new Thread(){  

      @Override

      public void run(){

      需要执行的代码块

      }

    };  //父类引用指向子类对象

    a.start();

 

    new Thread(new Runnable(){

      @Override

      public void run(){

      代码块

      }

 

    }).start();

四,线程安全问题

  1,Thread.currentThread().getName();显示哪个线程执行了次代码

  2,线程锁:关键字synchronized确保同一时间由一个线程访问该代码块

    private final Object lock = new Object();//创建锁,可以是任意类型,但是要加关键字final

    public  fun(){

      synchronized(lock){

      需要上锁的代码块

      }

    }

五,脏读

 

 

 

转载于:https://www.cnblogs.com/memo-song/p/8869767.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值