1. Application scenarios
(1) Ordinary browsers and network services (the network now written is an intermediate component that helps you complete thread control), network processing requests, various Dedicated server (such as game server)
(2) servlet multi-threading.
(3) FTP download, multi-threaded file operation.
(4) Multi-threading used in database.
(5) tomcat and tomcat use multi-threading internally. Hundreds of clients access the same WEB application. After tomcat accesses, the subsequent processing is put into a new thread for processing. The new thread finally calls our servlet program
(6) Background tasks: For example, regularly send emails to a large number of users (more than 1 million); regularly update configuration files and task scheduling (such as quartz), and some monitoring is used to collect information regularly.
(7) Automatic operation processing: such as regular backup of logs, regular backup of database, etc.
2. Example
Waiting timeout mode.
Developers often use this method to call scenarios. When calling a method, wait for a period of time (usually a given time period). If the method can get the result within the given time period, the result will be returned immediately. On the contrary, if the method times out, the default result will be returned.
A simple database connection pool instance.
//java.sql.Connection是一个接口,最终的实现是由数据库驱动提供方来实现。 //我们通过动态代理构造一个Connection,仅仅用于示范。 public class ConnectionDriver { //动态代理的处理器类 static class ConnectionHandler implements InvocationHandler{ @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { Thread.sleep(100); return null; } } //创建一个Connection的代理,在commit时休眠100毫秒 public static final Connection createConnection(){ return (Connection)Proxy.newProxyInstance(ConnectionDriver.class.getClassLoader(), new Class<?>[]{Connection.class}, new ConnectionHandler()); } }
The above is the detailed content of How to use and implement Java multithreading. For more information, please follow other related articles on the PHP Chinese website!