小编Kee*_*oek的帖子

Java Swing - 在EDT上运行

关于Swing和使用EDT进行GUI更新,我有几个问题.我刚刚开始阅读这些内容,所以我是这个领域的初学者:

  1. 在EDT上运行需要哪些操作?如果他们不这样做,只是提出一个例外?
  2. 我们实际上在EDT上有没有特定的时间?
  3. 如果我们使用我们安排任务SwingUtilities.invokeLater我们将它排入GUI更新任务的当前队列对吗?
  4. 访问上面的队列我猜是同步的,或者使用了一些并发集合,但是如果我从两个后台线程调度两个GUI更新任务,就不可能说先添加哪一个?例如,如果线程1 FIRST提交将JLable的文本设置为"是"的任务,然后,短时间之后,第二个线程出现并提交将该值设置为"no"的任务,我们是否保证结果将是"是",或者仅仅是操作系统如何安排这些事情的问题?
  5. SwingWorker究竟是如何确保done()在EDT上运行该方法的?它设置以下代码:

      future = new FutureTask<T>(callable) {
                   @Override
                   protected void done() {
                       doneEDT();
                       setState(StateValue.DONE);
                   }
               };
    
    Run Code Online (Sandbox Code Playgroud)

所以我想知道FutureTask是否以某种方式确保invokeLater被调用?

谢谢你的所有答案.

java swing event-dispatch-thread

10
推荐指数
2
解决办法
5564
查看次数

C 标准对数组到指针类型转换规则的 `&amp;`-exception 的目的是什么?

在 stackoverflow 上的其他地方(例如,此处,不幸的是,目前接受的答案是不正确的——但至少最高投票的答案是正确的),C 标准规定,在几乎所有情况下,数组char my_array[50]都将隐式转换为char *when它被使用,例如通过传递给一个函数 as do_something(my_array),给定一个声明void do_something(char *stuff) {}。也就是说,代码

void do_something(char *my_array) {
    // Do something
}

void do_something_2(char my_array[50]) {
    // Do something
}

int main() {
    char my_array[50];
    
    do_something(my_array);
    do_something_2(my_array);
    
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

由 gcc 编译,没有任何严格级别的警告。

然而,C11的第6.3.2.1.3规定,此转换发生特别是如果一个写操作&my_array,或sizeof(my_array)(而且这些是唯一次时,不会发生这种转换)。后一条规则的目的对我来说很明显——sizeof数组等于指向第一个元素的指针的大小是非常混乱的,所以应该避免。

但是这条规则的第一部分的目的(与写作有关&my_array)完全没有让我明白。看,该规则使类型为&my_array(在 C 标准的表示法中)char (*)[50],而不是char *。这种行为什么时候有任何用处?确实,除了 - 目的之外sizeof,为什么该类型根本char (*)[50]存在?

例如,在 stackexchange(例如 …

c arrays parameters parameter-passing

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

为什么没有同伴指示离开?

为什么在 x86 上没有伴随指令离开?那样,

pushl   %ebp
movl    %esp,%ebp
pushl   $3
popl    %eax
leave
ret
Run Code Online (Sandbox Code Playgroud)

可以变成:

enter #or something
pushl   $3
popl    %eax
leave
ret
Run Code Online (Sandbox Code Playgroud)

一般来说,这不是更快吗?

x86 assembly cdecl

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