multithreading - 多线程和并行编程的区别?

标签 multithreading parallel-processing

我有一个四核处理器。我用java编写了类似的东西;

一些.java;

public class Some extends Thread {
    private SharedData sharedVal;
    private String name;

    public Some(SharedData val, String threadName) {
        sharedVal = val;
        name = threadName;
    }

    public void run() {
        int temp;
        while(true) {
            temp = sharedVal.GetValue() + 1;
            sharedVal.SetValue(temp);
        }
    }
}

共享数据.java;
public class SharedData {
    private int value;

    SharedData() {
        value = 0;
    }

    public void SetValue(int d) {
        value = d;
    }

    public int GetValue() {
        return value;
    }
}

程序.java;
public class Program {
    public static void main(String[] args) {
        SharedData test = new SharedData();

        Some t1 = new Some(test, "thread1");
        Some t2 = new Some(test, "thread2");
        Some t3 = new Some(test, "thread3");
        Some t4 = new Some(test, "thread4");

        t1.start();
        t2.start();
        t3.start();
        t4.start();
    }
}

我运行程序并检查处理器图形,每个处理器部件看起来都在 %90 左右工作。

我的问题是;如果我可以这样使用系统资源,什么是并行编程?我弄错了吗?我在 c# 上看到了一个使用处理器数量的例子,这是怎么回事?

最佳答案

并行编程是指使用一组资源,通过分工,在更短的时间内解决一些问题。这是抽象定义,它依赖于这部分:通过分工在更短的时间内解决一些问题 .您在代码中显示的不是并行编程,因为您不是在处理数据来解决问题,您只是在多个线程上调用某些方法。虽然这是“并行”的,但它并不是全局解决问题。

处理器负载问题与并行编程有关,因为并行并行编程旨在使所有计算元素尽可能保持忙碌。但简单地保持 CPU 忙碌并不意味着您正在执行并行编程。

最后,并行编程远远超出了多线程,可以在同一台机器或不同机器上运行的进程之间进行。

关于multithreading - 多线程和并行编程的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8271405/

相关文章:

ASP.Net——监视器/锁定或互斥体

c# - 从正在运行的线程 C# 更改窗体的属性

image-processing - 并行计算图像的直方图

c# - Parallel.For 循环卡住

database-design - 事务处理 : How are simultaneous transaction managed?

c - 并行和顺序点积程序不同的结果

multithreading - 终止后是否可以中断 boost 线程?

vb.net - vb中的参数线程

java - 查找线程的实例

c - 带线程的并行合并排序/比 Seq 慢很多/慢。归并排序。帮助