Java究竟怎么玩?http://blog.csdn.net/cping1982

菩提本无树,明镜亦非台,本来无一物,何处惹尘埃

用户操作
[即时聊天] [发私信] [加为好友]
鹏凌三千(cping1982)ID:cping1982
167889次访问,排名478,好友49人,关注者52人。
机密……
cping1982的文章
原创 145 篇
翻译 0 篇
转载 44 篇
评论 350 篇
鹏凌三千(cping1982)的公告
本博评论删除规则如下:

1、辱骂性发言,无视其辱骂对象,一律删。

2、登录发表的评论,不违背第一条者一律不删。非登录发表的评论,过激者删。

3、若发生例外情况,则为CSDN博客系统自动删除。

声援SOFF|声援珊瑚虫:如果你是珊瑚虫用户,请坚决力挺声援珊瑚虫!

平生进退如飙风,一睨人才天下空。独向苍天横冷剑,何必生我惭英雄。

本人有效BLOG:

cping1982

ceponline

音乐:

风姿花传

ドラグ.スレイブ

ヒカルの碁

Believe

世界で一番ヤバイ恋

あんなに一緒だった

焔の扉

深海の孤独

君は仆に似ている

The ugly and beautiful world

静かな夜に

逆蝶

永恒的雪

梅花

几多愁

微风细雨

妈妈的歌

精忠报国

谁是大英雄

随遇而安

明天会吹什么风

逍遥游

爱江山更爱美人

最近评论
viperasi:还有,实在佩服 博主对JVM各个类的熟悉程度
viperasi:一直在学习 博主关于JAVA游戏方面的东西,收益非浅。

但是对于这个GREENJVM 我再想,如果想推广自己的软件,完全可以在软件发布的时候使用install4j来制作软件包,制作的时候还可以选择JRE是否被包含。

基本上 就算对于下一步都搞不定的,那软件他也未必知道从哪里下载 = =
所以,技术层面 很佩服,实用方面持怀疑态度
ml3947:大多人在网上看到日本的信息都是愤慨并无知的说一句“灭了小日本”。而且很多人都觉得日本经济衰退并无可惧。其实日本在好几年前3G手机就已经普及了,现在4G手机都即将普及,他们那只需要学生证就可以领一部手机。甚至人们不用到处转商店,只需要打开手机上网看看2维地图,就可以知道自己看的电视里的某首歌在离自己家最近的哪个商店有卖。而且手机3维地图也早开始制作。要说差距,其实根本不用明说。(这是我们学校一……
ml3947:又来看了。。哈哈,终于更新了2.下来看看。还有你也看日本动漫啊?我现在也是每个星期都等着新番更新的。。。
出会い関係者:出会いセックス素人
文章分类
收藏
    相册
    Java的PC游戏开发
    Java中的A*(A star)寻径实现
    Java仿雷电及其源代码
    Java制作的类祖码游戏-数字祖码
    Java实现窗体中角色逐渐风化效果
    Java版吃豆游戏
    人生如梦游戏间,RPG游戏开源开发讲座(JAVA篇)[2]——踏破红尘
    Java[伪]寻径追踪实现
    JAVA中[人工无脑]系统(chatbot)的实现
    Java中2.5D游戏(斜45度角)的设计与实现(1)
    Java中2.5D游戏(斜45度角)的设计与实现(2)
    Java仿太阁立志传5
    JAVA图形操作中FPS的计算(附带随机生成乱数球体用例)
    JAVA实现拼图游戏
    Java来做马里奥[0]—让精灵再次舞动
    Java来做马里奥[1]—木叶传承
    Java来做马里奥[2]—食不厌精
    Java来做马里奥[3]—杂兵登场
    Java模拟桌球打击处理及绘制
    Java汉诺塔测试
    Java炸弹人实现及源码
    Java版SLG游戏开发入门[0]--让绘制的窗口响应鼠标事件
    Java版SLG游戏开发入门[1]--关于本系列
    人生如梦游戏间,JAVA游戏开源开发讲座[番外篇]之AVG开发——皮影
    人生如梦游戏间,RPG游戏开源开发讲座(JAVA篇)[0]——月晕础润
    人生如梦游戏间,RPG游戏开源开发讲座(JAVA篇)[1]——风云初现
    人生如梦游戏间,RPG游戏开源开发讲座(JAVA篇)[3]——邯郸学步
    人生如梦游戏间,RPG游戏开源开发讲座(JAVA篇)[4]——一步莲华
    人生如梦游戏间,RPG游戏开源开发讲座(JAVA篇)[5]——一树双花
    人生如梦游戏间,RPG游戏开源开发讲座(JAVA篇)[6]——走马观花
    史上最扯Java图形绘制(J2SE)之一JAVA动画效果
    沉寂的国人开源项目
    bo-blog(blog系统,php项目)
    DockPanel Suite [Microsoft .NET Framework Winform UI]
    Hocate web framework[web框架]
    Loonframework-DAO[持久层框架]
    Loonframework-GAME[游戏框架,尚未发布]
    Loonframework-WEB[web框架,尚未发布]
    Luntbuild(软件管理工具)
    magike(php博客)
    myseelite(p2p流媒体系统,c++项目)
    newxy(新坐标)[web框架]
    opencrx(crm系统)
    redlion(web框架)
    x2blog(asp.net博客系统)
    YOYOPlayer(音乐播放器)
    袋鼠egg(服务器)
    经典Blog
    # gzfqh的专栏 →底层代码研究(病毒及汇编)(RSS)
    # java 3D 游戏编程(RSS)
    ApoGames(德国某人的Java游戏作品展示)
    Struts框架应用
    Struts框架应用~
    千里冰封[JAVA 浓香四溢]
    网络安全圈子
    经典站点
    Google
    IBM中国站
    JavaGame开发论坛
    JAVA开源大全
    Java爱好者
    Struts标签文档
    SUN 中国社区
    中国IT实验室
    数据库专区
    偶的其它应用实例
    C#将图像文件压缩为AVI文件播放
    Java&.Net虚拟机精简(GreenJVM&GreenDotNet发布)
    Java图形程序水纹倒映效果
    Java输出竖排古典文字
    .NET在线漫画下载程序
    C#转换AVI文件为BMP文件
    ClassLoader调用外部jar包
    ExtJS2.0开发与实践笔记[0]——初识ExtJS
    ExtJS2.0开发与实践笔记[1]——ExtJS中的Dialog与Form
    ExtJS2.0开发与实践笔记[2]——Ext中的Layout
    ExtJS2.0开发与实践笔记[3]——Ext中的Menu
    ExtJS2.0开发与实践笔记[4]——Ext中的动画处理
    JavaFx实现(1)-渐变效果
    JavaFx实现(2)-随机图形绘制
    Java中DAO的实现
    Java中Image翻转操作
    Java中将byte[]转为Blob对象
    Java中的A*(A star)寻径实现
    Java制作绿色软件(GreenJVM_0.1.0发布)
    JAVA图形操作类
    Java图形程序中的对话逐字显示实现
    Java实现任意文件在bmp中的隐藏与导出
    JAVA实现可设置背景的MDI窗口
    Java实现嵌入式数据库(文本数据库)代码实例
    Java实现类Windows导航栏
    Java正则表达式入门
    JAVA版JAVA IDE环境(源码)
    JAVA线程池的简单实现及优先级设置
    Java自定义JSlider UI
    Java获得系统环境变量
    Java音乐播放类
    ResultSet转为实体对象
    SWT行,AWT/Swing也行系列(1)-实现半透明及不规则窗体
    在JTable中加载进度条及进行操作
    在Swing中使用Html标签
    在SWT中使用ChartDirector
    浅谈java.util.concurrent包的并发处理
    浅谈Java集合中Array(数组)的应用
    精简JRE体积
    通过exe启动class
    偶的文章
    《三国以后有几国》
    中国本土化编程(汉语编程)之我见
    从珊瑚虫事件,看为什么中国出不了比尔.盖茨
    佛与专家
    叹今人无气节而作歌
    国产开源项目的七宗罪
    对Hibernate使用之愚见
    对Java(J2SE PC)开发之怪现象之我见
    浅谈命名规范[纯属强辩]
    消费者反映鸡蛋难吃后的37种回答方法
    灭了珊瑚虫,下一个是谁?
    率性而作无题歌一首
    百度对“十进制网络”的官方态度
    耻民
    论番茄花园的倒掉
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 浅谈java.util.concurrent包的并发处理收藏

    新一篇: 国耻日-永远的1937年12月13日,悼念反人类的南京大屠杀七十周年 | 旧一篇: Java实现任意文件在bmp中的隐藏与导出

    我们都知道,在JDK1.5之前,Java中要进行业务并发时,通常需要有程序员独立完成代码实现,而当针对高质量Java多线程并发程序设计时,为防止死蹦等现象的出现,比如使用java之前的wait()、notify()和synchronized等,每每需要考虑性能、死锁、公平性、资源管理以及如何避免线程安全性方面带来的危害等诸多因素,往往会采用一些较为复杂的安全策略,加重了程序员的开发负担.万幸的是,在JDK1.5出现之后,Sun大神终于为我们这些可怜的小程序员推出了java.util.concurrent工具包以简化并发完成。开发者们借助于此,将有效的减少竞争条件(race conditions)和死锁线程。concurrent包很好的解决了这些问题,为我们提供了更实用的并发程序模型。


    java.util.concurrent下主要的接口和类:

    Executor:具体Runnable任务的执行者。

    ExecutorService:一个线程池管理者,其实现类有多种,比如普通线程池,定时调度线程池ScheduledExecutorService等,我们能把一个

    Runnable,Callable提交到池中让其调度。

    Future:是与Runnable,Callable进行交互的接口,比如一个线程执行结束后取返回的结果等等,还提供了cancel终止线程。

    BlockingQueue:阻塞队列。

    下面我写一个简单的事例程序:

    FutureProxy.java
    package org.test.concurrent;
    /**
     * <p>Title: LoonFramework</p>
     * <p>Description:利用Future模式进行处理</p>
     * <p>Copyright: Copyright (c) 2007</p>
     * <p>Company: LoonFramework</p>
     * 
    @author chenpeng  
     * @email:ceponline@yahoo.com.cn 
     * 
    @version 0.1
     
    */

    import java.lang.reflect.InvocationHandler;
    import java.lang.reflect.Method;
    import java.lang.reflect.Proxy;
    import java.util.concurrent.Callable;
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;
    import java.util.concurrent.Future;
    import java.util.concurrent.ThreadFactory;

    public abstract class FutureProxy<T> {

        
    private final class CallableImpl implements Callable<T> {

            
    public T call() throws Exception {
                
    return FutureProxy.this.createInstance();
            }

        }


        
    private static class InvocationHandlerImpl<T> implements InvocationHandler {

            
    private Future<T> future;
            
            
    private volatile T instance;
            
            InvocationHandlerImpl(Future
    <T> future){
                
    this.future = future;
            }

            
            
    public Object invoke(Object proxy, Method method, Object[] args)
                    
    throws Throwable {
                
    synchronized(this){
                    
    if(this.future.isDone()){
                        
    this.instance = this.future.get();
                    }
    else{
                        
    while(!this.future.isDone()){
                            
    try{
                                
    this.instance = this.future.get();
                            }
    catch(InterruptedException e){
                                Thread.currentThread().interrupt();
                            }

                        }

                    }

                    
                    
    return method.invoke(this.instance, args);
                }

            }

        }


        
    /**
         * 实现java.util.concurrent.ThreadFactory接口
         * 
    @author chenpeng
         *
         
    */

        
    private static final class ThreadFactoryImpl implements ThreadFactory {

            
    public Thread newThread(Runnable r) {
                Thread thread 
    = new Thread(r);
                thread.setDaemon(
    true);
                
    return thread;
            }

        }


        
    private static ExecutorService service = Executors.newCachedThreadPool(new ThreadFactoryImpl());

        
    protected abstract T createInstance();

        
    protected abstract Class<? extends T> getInterface();
        
        
    /**
         * 返回代理的实例
         * 
    @return
         
    */

        @SuppressWarnings(
    "unchecked")
        
    public final T getProxyInstance() {
            Class
    <? extends T> interfaceClass = this.getInterface();
            
    if (interfaceClass == null || !interfaceClass.isInterface()) {
                
    throw new IllegalStateException();
            }


            Callable
    <T> task = new CallableImpl();

            Future
    <T> future = FutureProxy.service.submit(task);

            
    return (T) Proxy.newProxyInstance(interfaceClass.getClassLoader(),
                    
    new Class<?>[] { interfaceClass }new InvocationHandlerImpl(future));
        }

    }


    Test.java
    package org.test.concurrent;

    import java.util.Calendar;

    /**
     * <p>Title: LoonFramework</p>
     * <p>Description:</p>
     * <p>Copyright: Copyright (c) 2007</p>
     * <p>Company: LoonFramework</p>
     * 
    @author chenpeng  
     * @email:ceponline@yahoo.com.cn 
     * 
    @version 0.1
     
    */

     
    interface DateTest{

        String getDate();
    }


     
    class DateTestImpl implements DateTest{
        
         
    private String _date=null;
         
        
    public DateTestImpl(){
            
    try{
                _date
    +=Calendar.getInstance().getTime();
                
    //设定五秒延迟
                Thread.sleep(5000);
            }
    catch(InterruptedException e){
            }

        }

        
        
    public String getDate() {

            
    return "date "+_date;
        }

    }


     
    class DateTestFactory extends FutureProxy<DateTest>{

        @Override
        
    protected DateTest createInstance() {
            
    return new DateTestImpl();
        }


        @Override
        
    protected Class<? extends DateTest> getInterface() {
            
    return DateTest.class;
        }

    }


    public class Test{

        
    public  static void main(String[] args) {
        
            DateTestFactory factory 
    = new DateTestFactory();
            DateTest[] dts 
    = new DateTest[100];
            
    for(int i=0;i<dts.length;i++){
                dts[i]
    =factory.getProxyInstance();
            }

            
    //遍历执行
            for(DateTest dt : dts){
                System.out.println(dt.getDate());
            }

            
        }

    }



    原来很麻烦的并发处理,现在轻松的得以完成。

    我认为,concurrent的优点在于:

    功能强大且标准化的类库,实现了很多java thread原生api很费时才能实现的功能。

    已经过测试,代码质量有保证,相交自己写代码处理thread,节约了大量的测试时间。

    性能上已经过优化,比如以前通过synchronized在并发量大的时候性能会不好,而concurrent大量用到了非阻塞算法,尽量少用锁减少等待时间。

    在java并发处理中,concurrent已成为毋庸置疑的核心标准。

    发表于 @ 2007年12月12日 15:31:00|评论(loading...)|编辑

    新一篇: 国耻日-永远的1937年12月13日,悼念反人类的南京大屠杀七十周年 | 旧一篇: Java实现任意文件在bmp中的隐藏与导出

    评论:没有评论。

    发表评论  


    登录
    Csdn Blog version 3.1a
    Copyright © 鹏凌三千(cping1982)