码迷,mamicode.com
首页 > 编程语言 > 详细

java 在方法中新建线程,传参和加锁详解

时间:2016-12-08 18:04:33      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:div   rri   ble   style   pre   user   创建线程   简单   jedis   

在实际开发中,往往在基本两三种创建线程的方法之外,还用到一个简单的创建线程调用方法的情况,代码如下:

public void deleteRedisData(RedisKey redisKey){
        new Thread(new Runnable() {
            @Override
            public void run() {
                deleteRedisByRedisKey(redisKey);
            }
        }).start();
    }

    protected synchronized void deleteRedisByRedisKey(RedisKey redisKey) {
        String key = null;
        RedisKey[] keys = RedisKey.values();
        for (RedisKey key2 : keys) {
            if(redisKey.equals(key2)){
                key = key2.toString();
            }
        }
        List<User> userList = userDao.getAll();
        try {
            Jedis jedis = new Jedis();
            System.out.println("delete one");
            for (User user : userList) {
                String userId = user.getId();
                String lastKey = key.concat(userId);
                jedis.del(lastKey.getBytes());
            }
        } catch (Exception e) {
            System.out.println("缓存未连接!");
        }
    }

通过new Thread方法创建一个新的线程,在线程里调用deleteRedisByRedisKey方法,有时候在执行这个方法汇报异常,我的是空指针异常,是因为这个方法里用到的一些方法有可能会出现数据不同步的现象,这个时候会抛出异常,给这个方法加上synchronize关键字,给这个方法加上锁,会保证数据同步。

注意:

1、创建线程不需要继承Thread类或实现Runnable接口;

2、数据同步指的是在这个线程中获取数据或者修改数据有可能在别的线程中也在操作该数据,加锁之后别的线程会等待该线程执行结束,保证数据同步。

java 在方法中新建线程,传参和加锁详解

标签:div   rri   ble   style   pre   user   创建线程   简单   jedis   

原文地址:http://www.cnblogs.com/huskyking/p/6145666.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!