java多线程系列之杂谈|第一篇:Thread-Per-Message

本文介绍了一种在Java中实现异步处理的方法,通过Main类委托Host类显示文字,Host类启动线程处理委托任务,展示了如何使用线程进行异步操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

含义:将一些额外的操作进行异步处理。

范例程序:Main类委托Host类显示文字。Host启动一个线程来处理这项委托的工作。

顺序图如下:

示例代码:

Host

package pattern.perthread;

public class Host {

    private final Helper helper=new Helper();

    public void request(final int count,final char c){
        System.out.println("   request( "+count+","+c+") begin");
        new Thread(new Runnable() {
            @Override
            public void run() {
                helper.handle(count,c);
        }
        }).start();
        System.out.println("   request( "+count+","+c+") end");
    }

}

Helper

package pattern.perthread;

public class Helper {

    public void handle(int count,char c){
        System.out.println("   handle( "+count+","+c+") begin");
        for (int i = 0; i < count; i++) {
            slowly();
            System.out.println(c);
        }
        System.out.println("");
        System.out.println("   handle( "+count+","+c+") end");
    }

    private  void slowly(){
        try{
            Thread.sleep(100);
        }catch (java.lang.InterruptedException e){
            e.printStackTrace();
        }
    }

}
Main
package pattern.perthread;

public class Main {

    public static void main(String[] agrs){
        System.out.println("main begin");
        Host host=new Host();
        host.request(2,'A');
        host.request(3,'B');
        host.request(5,'C');
        System.out.println("main end");
    }


}

测试结果:

main begin
   request( 2,A) begin
   request( 2,A) end
   request( 3,B) begin
   request( 3,B) end
   handle( 2,A) begin
   request( 5,C) begin
   request( 5,C) end
main end
   handle( 3,B) begin
   handle( 5,C) begin
C
A
B
A
C
B

   handle( 2,A) end
C
B

   handle( 3,B) end
C
C

   handle( 5,C) end

SUCCESS。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值