Java Static关键字

Java static关键字

静态变量:对所有的对象共享,内存中只有一个副本。只会在类初次加载时初始化。
非静态变量:是对象拥有的,在对象创建时初始化,存在多个副本,对个对象拥有的副本互不影响。
静态方法:(线程安全)静态方法不依赖于任何对象就可以进行访问,属于类本身,它没有this。
非静态方法:又叫实例化方法,属于实例对象。

误区:static并不会影响方法或者变量的作用域

staic 关键字踩坑

/**
 * @author LuoYuSanQian
 * @version 1.0
 * @date 2022/3/15 20:52
 */
public class threadtest {


    public static void main(String[] args) {

        To a = new To();
        To a1 = new To();
        new Thread(a).start();
        new Thread(a1).start();
    }
}

class To implements Runnable {
   static int yy=100;
   
   //非静态方法(实例方法)操作的是实例化对象也就是this,也就是说synchronized此时锁的是不同对象。普通方法在此处并不能实现线程安全。
   //所以这里要设置为static对象
   public static synchronized void s(){
       if (yy <=0) {
          return;
       }
       try {
          Thread. sleep(10);
       } catch (InterruptedException e) {
           e.printStackTrace();
       }
       System.out.println(--yy+ "   "+Thread.currentThread().getName());
   }
    @Override
    public  void run() {

        while (true) {
            s();
        }

    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值