小编Wil*_*son的帖子

什么是线程上下文?

线程的上下文是否指向线程的个人内存?如果是这样,多个线程之间如何共享内存?

我不是在寻找代码示例 - 我在高层次上理解同步,我只是对这个术语感到困惑,并且希望对场景背后的实际情况有所了解.

我认为/认为每个线程都有某种私有内存的原因是因为Java和.NET中的volatile关键字,以及如果不使用相同的原语,不同的线程如何可以具有不同的值.那总是暗示着我的私人记忆.

由于我没有意识到这个术语更为通用,我想我是在问Java和C#中的上下文切换是如何工作的.

c# java multithreading synchronization

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

将许多矩形合并成更少的矩形

当相邻时,我想将许多不重叠的矩形压缩为较大的矩形。

我当前算法的伪代码:

do
   compress horizontally using sweep and prune
   compress horizontal output vertically using sweep and prune
while (this output is small than previous output)
Run Code Online (Sandbox Code Playgroud)

这是清扫和修剪链接

这工作得很好,但是我想知道是否有方法导致更少的矩形输出。我认为这比我现在做的还要复杂。

c# java compression collision-detection

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

强制Java上级类

可以在java中强制高级转换类型吗?查看示例.

public class Animal{}

public class Dog extends Animal{}

Dog dog = new Dog();  
Animal test = dog;
Run Code Online (Sandbox Code Playgroud)

我有什么:(test instanceof Dog)并且(test instanceof Animal)返回真实.
我想要的是:(test instanceof Dog)== false和(test instanceof Animal)== true

有一种方法可以强制测试只是一个动物吗?或者唯一的方法是创建动物传递狗的构造函数?我试图避免创建一个构造函数,因为我有一个复杂的对象,有很多getter/setter.

谢谢.

java casting class

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

在对象上声明boolean,不会更改其值

我只是弄清楚实例变量是如何工作的,但它让我有些奇怪.

public class DrumKit {
    boolean topHat = true;
    boolean snare = true;

    void playTopHat() {
        System.out.println("ding ding da-ding");
    }

    void playSnare(){
        System.out.println("bang bang ba-bang");        
    }
}

public class DrumKitTestDrive {
    public static void main(String [] args) {

        DrumKit d = new DrumKit();
        d.playSnare();
        d.snare = false;
        d.playTopHat();

        if (d.snare == true);{
            d.playSnare();  
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

怎么可能输出:"bang bang ba-bang ding ding ding dang bang bang ba-bang"

而不是:"砰砰砰砰砰砰哒哒哒"

因为我认为圈套只会播放一次,因为我在d.playSnare()之后声明了它; 到d.snare = false;

java instance-variables

-1
推荐指数
1
解决办法
95
查看次数