关于异步目前比较经典以及经常使用的实现方式就是消息队列:在不使用消息队列服务器的时候,用户的请求数据直接写入数据库,在高并发的状况下数据库压力剧增,使得响应速度变慢。可是在使用消息队列以后,用户的请求数据发送给消息队列以后当即 返回,再由消息队列的消费者进程从消息队列中获取数据,异步写入数据库。因为消息队列服务器处理速度快于数据库(消息队列也比数据库有更好的伸缩性),所以响应速度获得大幅改善!数据库
前两种实际上不多用,通常都是使用线程池的方式比较多一点,这个很好想,不可能来一个请求就new一个线程,无端的资源开销。bash
public class Test {
public static void main(String[] args) {
MyThread thread = new MyThread();
thread.start();
System.out.println("运行结束!");
}
}
class MyThread extends Thread {
@Override
public void run() {
super.run();
System.out.println("Thread create by extends Thread!");
}
}
复制代码
运行结束!服务器
Thread create by extends Thread!多线程
从上面结果能够看出:main方法是主线程,MyThread是新开辟的线程,是一个子任务,CPU以不肯定的方式,或者所是以随机的时间来调用线程中的run方法。并发
相比于第一种方式,更推荐使用这种,由于Java是单继承可是能够多实现。异步
public class CreateThreadByImplements {
public static void main(String[] args) {
MyRunnable runnable = new MyRunnable();
Thread thread = new Thread(runnable);
thread.start();
System.out.println("运行结束!");
}
}
class MyRunnable implements Runnable {
@Override
public void run() {
System.out.println("Thread create by implements Runnable!");
}
}
复制代码
运行结束!ide
Thread create by implements Runnable!高并发