多线程(三)

    当一个线程运行时,它可以调用 interrupt()来中断当前线程的运行.   public void interrupt(){}

 

    public boolean isInterrupt(){}  可以查看现成的中断状态.

 

   而线程如果是中断之后再休眠的话, 就会清除中断日志.

 

   多线程问题--> 资源的协调

         对于共享对象的访问必须同步, 叫做条件变量;

         java语言允许通过监视器 使用 条件变量 实现线程的同步;  监视器会阻止两个线程同时访问同一个资源,它就好像死锁一样作用在资源上 ; (我这一个线程在资源上没有操作完毕,另外一个线程根本不可能进来) ;

 比如一个卖票的任务中, 线程一进入了卖票这一操作的时候, 就会获得监视器,(也就是死锁); 这中间其它线程是无法再对该资源进行操作的, 当线程一的方法执行完毕的时候,才会释放监视器(也就是开锁) , 线程二的卖票操作才能够进行.

 

         这里就说到一个关键字了 "synchronized" , 用它就可以来标识 一片区域或者是方法, 使得被synchronized 包围或者是 修饰的部分 同步;

       同步方法就是在方法中添加一个 synchronized 关键字, 表示此方法为同步方法.

       synchronized 的第二种使用方法就是 同步代码快 synchronized{ }

  同步代码快 使用synchronized关键字括起来的代码表示同步代码块.

       同步代码块需要一个同步方法

         

             模型就是这样的 :

             synchronized(对象)

            {

                   同步代码

             }

       由于是对当前线程进行同步操作,  所以此操作应该使用this , 为this 进行同步.

       这意思就是说 上面的代码一般是这样写的:

            synchronized(this)

            {

                   同步代码

             }

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值