首页 > 作文

Java多线程中的Balking模式详解

更新时间:2023-04-04 18:22:56 阅读: 评论:0

目录
1.场景2.详细说明3.balking模式的本质:停止并返回源代码如下:总结

1.场景

自动保存功能:

为防止电脑死机,而定期将数据内容保存到文件中的功能。

2.详细说明

当数据内容被修改时,内容才会被保存。即当写入的内容与上次写入的内容一致时,其实就没有必要执行写入操河北工业大学就业作。也就是说,以”数据内容是否一致”作为守护条件。若数据内容相同,则不执行写入操作,直接返回。

3.balking模式的本质:停止并返回

如果现在不合适执行该操作,或者没有必要执行该操作,就停止处理,直接返回—-balking模式。

要实现上述描述的场景,我们需要设计四个类:数据类data,修改内容积极分子谈话内容的线程类writerthread,保存数据的线程类,启动线程的类。类图如下:

当数据类data里的内容被修改时,守护条件”数据内容是否一致”变为fal,则进行保存工作:保存工作可由定时保存功能完成也可由修改内容的线程类完成。如果守护条件为true,则直接返回,不执行保存操作。

源代码如下:

数据类

public class data{    private final string filename;//保存文件的名称    p两弹一星是什么rivate string content;//数据的内容    private boolean changed;//内容是否已保存的标志,若修改后为保存,则为true    public data(string filename,string content){        this.filename=filename;        this.content=content;        this.changed=true;    }    //修改数据内容    public synchronized void change(string newcontent){        content=newcontent;        changed=true;    }    //若数据内容修改过,则保存到文件中    public synchronized void save() throws ioexception{        if(!changed){            return;        }        dosave();        changed=fal;    }    //将数据保存到文件中    private void dosave() throws ioexception {        // todo auto-generated method stub        stdout.println(thread.currentthread().getname()+" calls dosave,content= "+content);        writer writer=new filewriter(filename);        writer.write(content);        writer.clo();    }}

修改内容的线程类

public class writerthread extends thread {    private final data data;    private final random random=new random();    public writerthread(string name,data data){        super(name);        this.data=data;    }    public void run(){        try {            for(int i=0;true;i++){                data.change("no."+i);//修改数据                thread.sleep(random.nextint(1000));//执行其他操作                data.save();            }        } catch (interruptedexception | ioexception e) {            // todo auto-generated catch block            e.printstacktrace();        }    }}

定时保存数据的线程类

public class saverthread extends thread {    private final data data;    public saverthread(string name,data data){        super(name);        this.data=data;    }    public void run(){        try {            while(true){               耽美 推荐 data.save();//保存数据                thread.sleep(1000);//休眠约1秒            }        } catch (ioe市场部年度工作总结xception e) {            // todo auto-generated catch block            e.printstacktrace();        } catch (interruptedexception e) {            // todo auto-generated catch block            e.printstacktrace();        }    }}

启动线程的类

public class main {    public static void main(string[] args) {        data data=new data("data1.txt", "empty");        new writerthread("changerthead",data).start();        new saverthread("saverthread", data).start();    }}

总结

到此这篇关于java多线程中的balking模式详解的文章就介绍到这了,更多相关java多线程balking模式内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!

本文发布于:2023-04-04 18:22:55,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/5d3c0c56f6ad1a055f424436cdb639f3.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:Java多线程中的Balking模式详解.doc

本文 PDF 下载地址:Java多线程中的Balking模式详解.pdf

标签:内容   数据   线程   模式
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图