Synchronized · Volatile

第十一天·synchronized

线程的生命周期

这里写图片描述

线程常用方法:
void run():创建该类的子类时必须实现的方法
void start():开启线程的方法
static void sleep(long t):释放CPU的执行权,不释放锁
static void sleep(long millis,int nanos):
final void wait():释放CPU的执行权,释放锁
final void notify():
static void yied():可以对当前线程进行临时暂停((让
线程将资源释放出来)

synchronized 锁的使用方法

synchronized (对象){加锁的代码};
注意加锁会降低效率,所以说存在一个加锁层级的问题

  • 代码锁:–>对代码级进行加锁
  • 方法锁:对方法进行加锁:protected synchronized void onCreate(Bundle
  • 对象锁:对对象的所有资源进行加锁
    synchronized后面传的参数是加锁对象,就是讲锁与这个对象绑定,
    锁并不单独存在,一个对象只能绑定一个锁

    创建一千个线程,每个都是对这个数进行加1

package com.xiaogao.user.android2lesson_11_threadpool;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;

public class ActivityS extends AppCompatActivity {

    //创建一个静态的变量用于各个线程进行加减--synchronized
    static int count=0;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //创建一千个线程,每个都是对这个数进行加1
        for (int i=0;i<1000;i++){
            new Thread(new Runnable() {
                @Override
                public void run() {
                    synchronized (this){
                    count=count+1;
                    }
                }
            }).start();
        }
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        //打印下结果,看看结果是怎样
        Log.i("数据","测试结果为:"+count);
    }
}

volatile

  • volatile可以保证对特殊地址的稳定访问。
  • volatile关键字为域变量的访问提供了一种免锁机制
  • 使用volatile修饰域相当于告诉虚拟机该域可能会被其他线程更
  • 因此每次使用该域就要重新计算,而不是使用寄存器中的值
  • volatile不会提供任何原子操作,它也不能用来修饰final类型的
    变量
//声明一个免锁的实时更新数据对象----------volatile
    volatile static int count1 = 0;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值