首页 > 编程语言 > 详细

多线程含义及使用

时间:2019-10-25 18:37:21      阅读:68      评论:0      收藏:0      [点我收藏+]

多线程含义

最终目的解决等待问题。

  • 通过并行计算提高程序执行性能
  • 需要等待网络、 I/O响应导致耗费大量的执行时间,可以采用异步线程的方式来减少阻塞

tomcat以前的io模型

  • 客户端阻塞

如果客户端只有一个线程,这个线程发起读取文件的操作必须等待IO 流返回,线程(客户端)才能做其他的事

  • 线程级别阻塞 BIO

客户端一个线程情况下,一个线程导致整个客户端阻塞。那么我们可以使用多线程,一部分线程在等待 IO 操作返回其他线程可以继续做其他的事。此时从客户端角度来说,客户端没有闲着。

技术分享图片

多线程应用

在java中,有多种方式

继承Thread类、实现Runnable接口、使用ExecutorService、Callable、Future实现带返回结果的多线程。

  • 继承Thread类

    public class MyThread extends Thread{
        public void run(){
            System.out.println("MyThread.run()");
        }
    }
    public static void main(String[] args){
        MyThread myThread = new MyThread();
        myThread.start();
    }
  • 实现Runable接口

    public class MyThread implements Runnable {
        public void run() {
            System.out.println("MyThread.run()");
        }
    }
  • 实现Callable接口通过FutureTask包装器来创建Thread线程

    public class CallableDemo implements Callable<String> {
        @Override
        public String call() throws Exception {
            int a = 1;
            int b = 2;
            System.out.println(a + b);
            return "执行结果" + (a + b);
        }
    
        public static void main(String[] args) throws ExecutionException, InterruptedException {
            ExecutorService executorService = Executors.newFixedThreadPool(1);
            CallableDemo callableDemo = new CallableDemo();
            Future<String> future = executorService.submit(callableDemo);
            System.out.println(future.get());
            executorService.shutdown();
        }
    }

优雅处理线程

zookeeper 源码: 通过阻塞队列以及多线程的方式,实现对请求的异步化处理,提升处理性能

阻塞队列:LinkedBlockingQueue(无界阻塞队列)

多线程含义及使用

原文:https://www.cnblogs.com/snail-gao/p/11739463.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!