多线程编程怎么回事啊??

线程是一组指令的集合,或者是程序的特殊段,它可以在程序里独立执行。也可以把它理解为代码运行的上下文。所以线程基本上是轻量级的进程,它负责在单个程序里执行多任务。通常由操作系统负责多个线程的调度和执行。什么是多线程?多线程是为了使得多个线程并行的工作以完成多项任务,以提高系统的效率。线程...
多线程编程怎么回事啊??
 每个正在系统上运行的程序都是一个进程。每个进程包含一到多个线程。进程也可能是整个程序或者是部分程序的动态执行。线程是一组指令的集合,或者是程序的特殊段,它可以在程序里独立执行。也可以把它理解为代码运行的上下文。所以线程基本上是轻量级的进程,它负责在单个程序里执行多任务。通常由操作系统负责多个线程的调度和执行。

  什么是多线程?

  多线程是为了使得多个线程并行的工作以完成多项任务,以提高系统的效率。线程是在同一时间需要完成多项任务的时候被实现的。

  使用线程的好处有以下几点:

  ·使用线程可以把占据长时间的程序中的任务放到后台去处理

  ·用户界面可以更加吸引人,这样比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示处理的进度

  ·程序的运行速度可能加快

  ·在一些等待的任务实现上如用户输入、文件读写和网络收发数据等,线程就比较有用了。在这种情况下我们可以释放一些珍贵的资源如内存占用等等。

  还有其他很多使用多线程的好处,这里就不一一说明了。

  一些线程模型的背景

  我们可以重点讨论一下在Win32环境中常用的一些模型。

  ·单线程模型

  在这种线程模型中,一个进程中只能有一个线程,剩下的进程必须等待当前的线程执行完。这种模型的缺点在于系统完成一个很小的任务都必须占用很长的时间。

  ·块线程模型(单线程多块模型STA)

  这种模型里,一个程序里可能会包含多个执行的线程。在这里,每个线程被分为进程里一个单独的块。每个进程可以含有多个块,可以共享多个块中的数据。程序规定了每个块中线程的执行时间。所有的请求通过Windows消息队列进行串行化,这样保证了每个时刻只能访问一个块,因而只有一个单独的进程可以在某一个时刻得到执行。这种模型比单线程模型的好处在于,可以响应同一时刻的多个用户请求的任务而不只是单个用户请求。但它的性能还不是很好,因为它使用了串行化的线程模型,任务是一个接一个得到执行的。

  ·多线程块模型(自由线程块模型)

  多线程块模型(MTA)在每个进程里只有一个块而不是多个块。这单个块控制着多个线程而不是单个线程。这里不需要消息队列,因为所有的线程都是相同的块的一个部分,并且可以共享。这样的程序比单线程模型和STA的执行速度都要块,因为降低了系统的负载,因而可以优化来减少系统idle的时间。这些应用程序一般比较复杂,因为程序员必须提供线程同步以保证线程不会并发的请求相同的资源,因而导致竞争情况的发生。这里有必要提供一个锁机制。但是这样也许会导致系统死锁的发生。2013-05-11
package c14;
import java.awt.*;
import java.awt.event.*;
import java.applet.*;

public class Counter1 extends Applet {
private int count = 0;
private Button
onOff = new Button("Toggle"),
start = new Button("Start");
private TextField t = new TextField(10);
private boolean runFlag = true;
public void init() {
add(t);
start.addActionListener(new StartL());
add(start);
onOff.addActionListener(new OnOffL());
add(onOff);
}
public void go() {
while (true) {
try {
Thread.currentThread().sleep(100);
} catch (InterruptedException e){}
if(runFlag)
t.setText(Integer.toString(count++));
}
}
class StartL implements ActionListener {
public void actionPerformed(ActionEvent e) {
go();
}
}
class OnOffL implements ActionListener {
public void actionPerformed(ActionEvent e) {
runFlag = !runFlag;
}
}
public static void main(String[] args) {
Counter1 applet = new Counter1();
Frame aFrame = new Frame("Counter1");
aFrame.addWindowListener(
new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
aFrame.add(applet, BorderLayout.CENTER);
aFrame.setSize(300,200);
applet.init();
applet.start();
aFrame.setVisible(true);
}
} ///:~2013-05-11
mengvlog 阅读 8 次 更新于 2025-07-19 19:34:53 我来答关注问题0
  •  翡希信息咨询 什么是多线程编程

    线程安全问题:多线程编程中需要特别注意线程安全问题,确保多个线程同时访问共享资源时不会导致数据不一致或程序崩溃。同步机制:使用适当的同步机制来确保线程间的正确执行顺序和数据一致性。综上所述,多线程编程是一种强大的编程技术,通过利用计算机的多核处理能力来提高程序的运行效率和响应性能。然而,它...

  • 多线程编程是一种编程技术,它允许程序同时执行多个线程,每个线程可以完成程序的一部分任务。以下是对多线程编程的详细解释:一、多线程编程的基本概念 线程:线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。多线程:多线程指的是在一个程序中可以同时运行多个线...

  • 多线程编程通常在以下情况下使用:程序需要同时处理多个任务:当程序需要同时执行多个任务,而这些任务之间又没有直接的依赖关系时,可以使用多线程编程。这样可以充分利用CPU资源,提高程序的运行效率。程序存在阻塞操作:当程序中存在需要等待的操作,这些操作会导致程序阻塞,无法继续处理其他任务。此时,可以使...

  •  翡希信息咨询 多线程是什么

    多线程是一种编程技术,它允许在单一程序中同时执行多个线程,即多个任务。具体来说:提升处理任务能力:在计算机系统中,尽管CPU通常只能在同一时间执行一个线程的任务,但多线程技术通过同时执行多个线程,能够极大地提升计算机处理任务的能力。特别是在多核处理器上,多线程技术能够充分发挥每个核心的性能,...

  •  翡希信息咨询 多线程 是什么意思?

    多线程编程允许程序同时执行多个任务,从而提高了程序的并发性。通过多线程,可以充分利用多核处理器的计算能力,加快程序的执行速度。多个线程并行执行:多个线程可以在同一时间段内执行各自的任务,这些任务可以是相同的,也可以是不同的。这种并行执行的方式可以大大提高程序的运行效率。实现异步操作:在单...

檬味博客在线解答立即免费咨询

编程相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部