以下是一个基于Java的简单并发程序示例,可以同时启动多个线程对指定URL进行HTTP请求,并输出响应结果和耗时信息。

import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;

public class SimpleConcurrentHttpClient {

    public static void main(String[] args) {
        if (args.length != 2) {
            System.out.println("Usage: java SimpleConcurrentHttpClient [url] [concurrency]");
            return;
        }

        String urlStr = args[0];
        int concurrency = Integer.parseInt(args[1]);

        for (int i = 0; i < concurrency; i++) {
            new Thread(() -> {
                try {
                    long startTime = System.currentTimeMillis();
                    URL url = new URL(urlStr);
                    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
                    connection.setRequestMethod("GET");
                    connection.connect();
                    int statusCode = connection.getResponseCode();
                    long endTime = System.currentTimeMillis();
                    System.out.println("Thread " + Thread.currentThread().getId() + ": " +
                            "Status code: " + statusCode +
                            ", Elapsed time: " + (endTime - startTime) + "ms");
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }).start();
        }
    }
}

该程序接受两个参数:URL和并发数。程序通过启动多个线程并发访问指定URL,每个线程发送一个HTTP GET请求并输出响应状态码和耗时信息。

在以上代码中,我们使用了Java的Thread类来创建多个线程,并使用Lambda表达式创建了一个Runnable对象作为线程执行体。在这个Runnable对象中,我们使用了Java的URL类和HttpURLConnection类来进行HTTP请求,并输出响应状态码和耗时信息。

通过使用Java的并发编程机制,我们可以轻松地实现高性能、高并发的网络应用程序。当然,在实际应用中,我们还需要考虑各种并发问题,例如线程安全、锁竞争、死锁等问题,以保证程序正确、可靠地运行。