- 博客(58)
- 资源 (3)
- 收藏
- 关注
原创 java泛型编程学习 笔记二:使用泛型的约束和局限性
我在java泛型编程学习 笔记一:为什么要使用泛型这篇博文中,曾经提到过java的"泛型机制"属于java的一种语法糖,它存在的目的是简化复杂的代码,以提高程序的安全性。实际上java虚拟机没有任何类型对象——所有的对象都属于普通类对象,所以说不管我们在任何时候定义一个泛型类型,虚拟机都会为其提供一个“原始类型”。“原始类型”名称:删去类型变量之后的泛型类型名称。“原始类型”中类型参数的“擦除”:将类型参数替换为限定类型,无限定类型的替换为Object。
2017-01-03 16:45:04 2371
原创 centos系统下安装daemontools详细指南
之前在centos5系列系统下安装完daemontools后,在/etc/inittab中会自动加入一行"SV:12345:respawn:/command/svscanboot/etc/inittab (END) ",然后daemontools会自动启动起来。最近在centos6系列下安装完daemontools之后,发现daemontools无法自动启动,后来在网上
2016-12-07 18:20:36 5012
原创 并发编程学习总结(八) :java中synchronized关键字使用详解 对象锁的相关条件的使用(2)
上一篇博客中主要学习了synchronized关键字使用对象锁和类锁 已经对象锁的一些简单特性。这篇文章中我们主要来学习一下对象锁的相关条件的使用。我们知道显示锁ReentrantLock 有一个或多个相关的条件对象,而对象锁只有一个相关条件。wait()方法添加一个线程到该条件的等待集中notifyAll()/notity()方法解除等待线程的阻塞状态当我们调用对象的相关
2016-07-06 19:25:32 2001
原创 并发编程学习总结(七) :java中synchronized关键字使用详解(1)
上一篇中学习了显示锁ReentrantLock和其条件对象Condition的使用,下面小小的总结一下:(1) 锁用来保护代码片段,任何时刻只能有一个线程执行被保护的代码片段(2) 锁可以管理试图进入被保护代码片段的线程(3) 锁可以拥有一个或多个相关的条件对象(4) 每个条件对象管理那些已经获得了锁,但还需要满足额外条件才能运行的线程 Lock和Condition接口为程
2016-07-06 18:30:06 1922
原创 并发编程学习总结(六) :java 显式锁ReentrantLock使用详解之测试锁与超时
并发编程学习总结(三) : 线程的中断详解我在上面的这篇博客中,曾经写到过线程在获取锁的过程中是无法中断的。
2016-06-13 18:11:47 7752 1
原创 并发编程学习总结(五) :java 显式锁ReentrantLock使用详解之条件对象(2)
(1) ReentrantLock的条件对象通常,线程进入临界区,却发现在某一条件满足之后才能执行,条件对象就是用来管理那些已经获得了锁,但是却不能做有用工作的线程。一个锁对象可以有一个或多个相关的条件对象,我们可用lock.newCondition()方法获得一个条件对象。ReentrantLock myLock = new ReentrantLock();// 获得锁myLock
2016-06-13 12:01:12 8058
原创 并发编程学习总结(四) :java 显式锁ReentrantLock使用详解之lock()\unlock() 加锁与释放锁
在大多数实际的多线程应用中,两个或两个以上的线程需要共享对同一数据的存取。如果两个线程存取相同的对象,并且每一个线程都调用了一个修改该对象状态的方法,那么线程彼此踩了对方的脚,根据各线程访问数据的次序,可能会产生讹误的对象。这样的一种现象称之为竞争条件。当然多个线程共享一个变量在实际的应用中有时难以避免,但是我们可以通过java提供的一些技术来避免线程彼此踩脚的行为发生。java提供了
2016-05-17 20:53:54 5547
原创 并发编程学习总结(三) : 线程的中断详解
如果你使用过杀毒软件,可能会发现全盘杀毒太耗时间了,这时你如果点击取消杀毒按钮,那么此时你正在中断一个运行的线程。java为我们提供了一种调用interrupt()方法来请求终止线程的方法,下面我们就一起来学习一下线程的中断。每一个线程都有一个boolean类型标志,用来表明当前线程是否请求中断,当一个线程调用interrupt() 方法时,线程的中断标志将被设置为true。我
2016-05-16 20:51:44 6801
原创 java中wait()、this.wait()、super.wait()、object.wait()的使用区别
今天有位同学过来问我下面代码中那个super.wait()是什么意思? public synchronized void waitAvailable() { try { if (num == "wait") super.wait(); } catch (InterruptedException ex) { } }那我们今天就来讲一下synchron
2016-05-16 17:01:20 14131 3
原创 并发编程学习总结(二) : 详解 线程的6种不同状态
(一) 线程状态:我们先讨论一下线程的几种状态:java中Thrad.State总共有6中状态:(1)New (新创建)(2)Runnable (可运行)(3)Bolcked (被阻塞)(4)Waiting (等待)(5)Timed Waiting (计时等待)(6)Terminated (被终止)下面我们分别看一下线程的这6中状态分别出现在什么情况下。
2016-05-06 10:44:52 4226
原创 并发编程学习总结(一) :java 创建线程的三种方式的优缺点和实例
java 创建线程有三种方式:(1) 继承Thread 类(2)实现Runnable接口 (3)实现Callable接口
2016-05-04 15:01:43 5025
原创 zookeeper 脚本 zkServer.sh zkCli.sh zkCleanup.sh zkEnv.sh 详解(三)
zkCli.sh 脚本用的也比较多 我们又是需要登录到服务端查看一些节点的信息,通过这个脚本是比较直接和快速的#!/bin/sh# Licensed to the Apache Software Foundation (ASF) under one or more# contributor license agreements. See the NOTICE file dis
2016-01-29 18:52:45 5027
原创 zookeeper 脚本 zkServer.sh zkCli.sh zkCleanup.sh zkEnv.sh 详解(二)
zkEnv.sh 脚本比较重要 重要的一些变量都可以在这里面直接进行修改配置#!/bin/sh# Licensed to the Apache Software Foundation (ASF) under one or more# contributor license agreements. See the NOTICE file distribu
2016-01-29 18:40:30 5131
原创 zookeeper 脚本 zkServer.sh zkCli.sh zkCleanup.sh zkEnv.sh 详解(一)
学习使用zookeeper已经有一段时间了,在实际的生产环境下对于zookeeper自带的服务端脚本往往需要进行修改后使用,以便能更好地服从业务需求。今天来总结一下zookeeper自带脚本的功能在%Zk_HOME%/bin目录下有7个比较有用的脚本文件其中*.sh和*.cmd分别是适用于UNIX系统和Windows系统下的文件zkCleanup.sh 功能:清理zooke
2016-01-28 15:46:21 13867
转载 Java并发编程:线程池的使用
这篇文章写的很全面 对于java自带的线程池有源码和策略的分析,还有实例的展示。原博地址:http://www.cnblogs.com/dolphin0520/p/3932921.html 感谢博主的辛苦总结和分享Java并发编程:线程池的使用 在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量
2016-01-22 15:41:17 2679 1
原创 今日开通博客和大家沟通交流
之前上学的时候 ,遇到不懂的问题,经常上网上去查看别人的博客寻找答案,也确实是从博客中学到了很多东西。工作之后,遇到了很多问题,问题解决之后,总想着别人也可能会遇到同样的困惑,所有我也开通博客。一是 记录自己的工作所学二是 方便和大家沟通学习
2016-01-21 18:49:25 1788
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人