java 信号处理模块_如何用JAVA实现异步信息处理

展开全部

通常同步意味着一个任务的某个处理过程会对多个线程在用62616964757a686964616fe4b893e5b19e31333363373731串行化处理,而异步则意味着某个处理过程可以允许多个线程同时处理。异步通常代表着更好的性能,因为它很大程度上依赖于缓冲,是典型的使用空间换时间的做法,例如在计算机当中,高速缓存作为cpu和磁盘io之间的缓冲地带协调cpu高速计算能力和磁盘的低速读写能力。

(1):重新启动一个java程序就启动了一个进程

可以用操作系统命令行启动 Runtime.getRuntime().exec("java -classpath . XXX");

f8a2a4b470e8d522bf550b905127cbaa.png

(2):可不可以在接收消息的模块中的addtolist函数中添加一个专门的处理函数,函数执行时先向list中添加消息,然后探测当前有没有处理线程,如果没有,则启动线程。

(3):想省点工作,可以用BlockingQueue来代替list,这样线程等待和唤醒不用写代码实现了,如果非要用list,那么就做好同步

list的小例子:

Java codeclass MessageConsumer extends Thead {    private List list;    private boolean running = true;    public MessageConsumer(List list) {this.list = list;}    public void run() {        while (running) {            YourMessageType msg = null;             try {                synchronized(list) {                    while (list.size() == 0) {                        list.wait();                    }                    msg = list.remove(0);                    list.notiryAll();                }            } catch (Exception e) {                e.printStackTrace();            }            if (msg == null) continue;            //System.out.println(msg); //print message        }    }}//调用sampleclass ShareModule {    List list = new ArrayList();    ...}public class Main {    public static void main(String[] args) {        ShareMudule sm; //so on        ...        Thread t = new MessageConsumer(sm.list);        t.start();        ...    }}

2224c999000d9d908fdc2c09dd9f87cf.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值