java

位置:IT落伍者 >> java >> 浏览文章

超线程多核心下Java多线程编程技术分析[1]


发布日期:2019年03月01日
 
超线程多核心下Java多线程编程技术分析[1]

Java环境下的多线程技术

构建线程化的应用程序往往会对程序带来重要的性能影响例如请考虑这样一个程序它从磁盘读取大量数据并且在把它们写到屏幕之前处理这些数据(例如一个DVD播放器)在一个传统的单线程程序(今天所使用的大多数客户端程序)上一次只有一个任务执行每一个这些活动分别作为一个序列的不同阶段发生只有在一块已定义大小的数据读取完成时才能进行数据处理因此能处理数据的程序逻辑直到磁盘读操作完成后才得到执行这将导致非常差的性能问题

在一个多线程程序中可以分配一个线程来读取数据让另一个线程来处理数据而让第三个线程把数据输送到图形卡上去这三个线程可以并行运行这样以来在磁盘读取数据的同时仍然可以处理数据从而提高了整体程序的性能许多大量的示例程序都可以被设计来同时做两件事情以进一步提高性能Java虚拟机(JVM)本身就是基于此原因广泛使用了多线程技术

本文将讨论创建多线程Java代码以及一些进行并行程序设计的最好练习另外还介绍了对开发者极为有用的一些工具和资源篇幅所限不可能全面论述这些问题所以我想只是重点提一下极重要的地方并提供给你相应的参考信息

线程化Java代码

所有的程序都至少使用一个线程在C/C++和Java中这是指用对main()的调用而启动的那个线程另外线程的创建需要若干步骤创建一个新线程然后指定给它某种工作一旦工作做完该线程将自动被JVM所杀死

Java提供两个方法来创建线程并且指定给它们工作第一种方法是子类化Java的Thread类(在javalang包中)然后用该线程的工作函数重载run()方法下面是这种方法的一个示例

public class SimpleThread extends Thread {

public SimpleThread(String str) {

super(str);

}

public void run() {

for (int i = ; i < ; i++) {

Systemoutprintln(i + + getName());

try {

sleep((long)(Mathrandom() * ));

} catch (InterruptedException e) {}

}

Systemoutprintln(DONE! + getName());

}

}

[] [] [] []

               

上一篇:超线程多核心下Java多线程编程技术分析[2]

下一篇:Java线程池技术实现TCP端口扫描