线程池

线程的生命周期:
新建 ----》就绪----》运行-----》阻塞----》死亡

 为什么要使用同步:                             
java允许多线程并发控制,当多个线程同时操作一个可共享的资源变
量时(如数据的增删改),将会导致数据不准确,相互之间产生冲突,因
此加入同步锁以避免在该线程没有完成操作之前,被其他线程的调用,从
而保证了该变量的唯一性和准确性

一:
synchronized是Java中的关键字,是一种同步锁。它修饰的对象有以下几种: 
1. 修饰一个代码块,被修饰的代码块称为同步语句块,其作用的范围是大括号{}括起来的代码,作用的对象是调用这个代码块的对象; 
2. 修饰一个方法,被修饰的方法称为同步方法,其作用的范围是整个方法,作用的对象是调用这个方法的对象; 
3. 修改一个静态的方法,其作用的范围是整个静态方法,作用的对象是这个类的所有对象; 
4. 修改一个类,其作用的范围是synchronized后面括号括起来的部分,作用主的对象是这个类的所有对象。

二:
volatile关键字,是对变量加锁的:


例子代码:
package com.coderqi.android2lesson_11_threadpool;

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

public class MainActivity extends AppCompatActivity {
    //创建一个静态的变量用于各个线程进行加载
    static   int count = 0;
    //声明一个免锁的实时更新数据对象
    volatile static  int count1 = 0;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //创建1000个线程,每个都是对这个数进行加1;
        for (int i =0;i<1000;i++){
            new Thread(new Runnable() {
                @Override
                public void run() {
                    //先让线程休眠1秒中

                    //synchronized 锁  使用方法
                    // synchronized(对象){
                    // 需要加锁的代码
                    //     }

                    //注意:加锁会降低下效率,所以说,存在一个加锁层级的问题
                    //代码锁:对代码级进行加锁
                    //方法锁:对方法进行加锁
                    //对象锁:对对象所有的资源进行加锁
                    // synchronized 后面传的参数是加锁对象,就是将锁与对象绑定,
                    //锁并不单独存在,一个对象只能绑定一个锁



                    synchronized (this){
                        count = count +1;
                    }


                    count1++;

                }
            }).start();
        }
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        //打印结果,看看结果怎样
        Log.i("数据:","测试的结果:"+ count + "免锁的结果为" + count1);

        //脏数据:不干净的数据
        //不应该出现的数据或者和预期不一致的数据



    }
}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值