小编Tam*_*aky的帖子

为什么运行一百个异步任务比运行一百个线程需要更长的时间?

为什么运行一百个异步任务比运行一百个线程需要更长的时间?

我有以下测试类:

public class AsyncTests
{

    public void TestMethod1()
    {
        var tasks = new List<Task>();

        for (var i = 0; i < 100; i++)
        {
            var task = new Task(Action);
            tasks.Add(task);
            task.Start();
        }

        Task.WaitAll(tasks.ToArray());            
    }


    public void TestMethod2()
    {
        var threads = new List<Thread>();

        for (var i = 0; i < 100; i++)
        {
            var thread = new Thread(Action);
            threads.Add(thread);
            thread.Start();
        }

        foreach (var thread in threads)
        {
            thread.Join();
        }
    }

    private void Action()
    {
        var task1 = LongRunningOperationAsync();
        var …
Run Code Online (Sandbox Code Playgroud)

c# multithreading async-await

10
推荐指数
1
解决办法
957
查看次数

Flyweight模式与静态字段

在我的理解中,flyweight模式的目的是通过共享共同的外在状态来减少内存占用并提高性能.为什么有人更愿意在静态字段中存储共享状态来实现模式?

请考虑以下示例:http://www.oodesign.com/flyweight-pattern-wargame-example-java-sourcecode.html

在此输入图像描述

如果我是对的,那么本例中的要点是通过保持对单个SoldierImp对象的引用来共享SoldierClient类的所有实例之间的公共状态(soldierGraphicalRepresentation对象).

为什么我会为实施这个设计而烦恼?我很想宣布SoldierClient类如下:

public class SoldierClient implements Soldier 
{
    protected static Object soldierGraphicalRepresentation;
    private int currentLocationX;
    private int currentLocationY;

    static SoldierImp()
    {
        soldierGraphicalRepresentation = LoadGraphicalRepresentation();
    }

    public void moveSoldier(int previousLocationX, int previousLocationY, int newLocationX, int newLocationY) {
        // do stuff with the graphical representation

    }
}
Run Code Online (Sandbox Code Playgroud)

这样,SoilderClient的所有实例共享对同一个士兵图形表示对象的引用,并实现相同的目标.我错了吗?

design-patterns flyweight-pattern

6
推荐指数
1
解决办法
903
查看次数

为什么有人会使用Java Thread无参数构造函数?

在什么情况下,任何人都会使用Java Thread类的无参数构造函数?API说:

此构造函数与Thread(null,null,gname)具有相同的效果,其中gname是新生成的名称.

如果我错了,请纠正我,但我认为在实例化新的Thread对象后无法修改线程的目标.如果目标等于null,那么start方法什么都不做?

你为什么要使用这个构造函数?

java multithreading

5
推荐指数
1
解决办法
423
查看次数

为什么不能在声明类之外调用事件或调用它们的调用列表

面试问题:为什么不能调用事件并且从声明类之外设置调用列表?

我在本文的事件调用中找到了对问题第一部分的解释

我假设第二部分的答案在于安全性.还有其他原因需要考虑吗?

.net c# events

2
推荐指数
1
解决办法
178
查看次数