如何高效运用Java线程实现并发编程?

2026-06-11 15:2010阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1070个文字,预计阅读时间需要5分钟。

如何高效运用Java线程实现并发编程?

大学期间就专注于搞ACM了,没写过太多工程,主要是多系统协作的工程。工作中遇到一种场景,我自己编写的代码需要多次调用不同的系统API,HTTP接口rt在几十毫秒内左左右右,我必须在几百毫秒内完成。


  大学的时候就顾着搞acm了,没写过工程,尤其是多系统协作的工程。工作中遇到一种场景,我自己代码需要多次调用别的系统api,http的接口rt在几十毫秒左右,我必须在几百毫秒内完成上百次的查询,串行的单线程代码不可能完,所以不可避免需要使用到线程,在java里线程的实现方方式有三种 Runnable Thread Callable。
  Runnable和Callable都是接口,Thread是类,但要是看下这三者的代码,其实发现最底层都和Runable有关,所以我们先来看下 Runnable

public interface Runnable {
public abstract void run();
}

  Runable只定义了run一个函数,这个函数就是线程执行时调用的函数了。下面我展示个Runable的demo。
  Thread其实也实现了Runable接口,如果用Thread,重写run函数后就可以直接启动线程了。
  之前有种印象,Runable的使用频次要高于Thread,后来上网查了下,其实并不是用Thread会带来什么问题,而且由于java的特性,无法实现多继承,如果你用Thread就没办法继承其他类了,就会限制到你写代码的灵活性,而接口没有这个问题。
  Thread类中有好多native方法,我猜是和操作系统做交互用的,毕竟java 的线程最终还是映射到系统进程实现的(具体可参考《深入理解java虚拟机》一书,看过一次由于没啥概念,都忘记了)。

阅读全文
标签:时候

本文共计1070个文字,预计阅读时间需要5分钟。

如何高效运用Java线程实现并发编程?

大学期间就专注于搞ACM了,没写过太多工程,主要是多系统协作的工程。工作中遇到一种场景,我自己编写的代码需要多次调用不同的系统API,HTTP接口rt在几十毫秒内左左右右,我必须在几百毫秒内完成。


  大学的时候就顾着搞acm了,没写过工程,尤其是多系统协作的工程。工作中遇到一种场景,我自己代码需要多次调用别的系统api,http的接口rt在几十毫秒左右,我必须在几百毫秒内完成上百次的查询,串行的单线程代码不可能完,所以不可避免需要使用到线程,在java里线程的实现方方式有三种 Runnable Thread Callable。
  Runnable和Callable都是接口,Thread是类,但要是看下这三者的代码,其实发现最底层都和Runable有关,所以我们先来看下 Runnable

public interface Runnable {
public abstract void run();
}

  Runable只定义了run一个函数,这个函数就是线程执行时调用的函数了。下面我展示个Runable的demo。
  Thread其实也实现了Runable接口,如果用Thread,重写run函数后就可以直接启动线程了。
  之前有种印象,Runable的使用频次要高于Thread,后来上网查了下,其实并不是用Thread会带来什么问题,而且由于java的特性,无法实现多继承,如果你用Thread就没办法继承其他类了,就会限制到你写代码的灵活性,而接口没有这个问题。
  Thread类中有好多native方法,我猜是和操作系统做交互用的,毕竟java 的线程最终还是映射到系统进程实现的(具体可参考《深入理解java虚拟机》一书,看过一次由于没啥概念,都忘记了)。

阅读全文
标签:时候