小编A J*_*son的帖子

等待多个线程在Java中完成

在程序执行过程中,会启动许多线程.线程数量取决于用户定义的设置,但它们都使用不同的变量执行相同的方法.

在某些情况下,执行中需要清理,其中一部分是停止所有线程,我不希望它们立即停止,我只是设置一个他们检查的变量来终止它们.问题是它可以在线程停止前最多1/2秒.但是,我需要确保在清理可以继续之前所有线程都已停止.清理是从另一个线程执行的,所以从技术上讲,我需要这个线程来等待其他线程完成.

我想到了几种方法,但它们似乎都过于复杂.我希望有一些方法可以等待一组线程完成.有这样的事吗?

谢谢.

java multithreading synchronization

35
推荐指数
4
解决办法
6万
查看次数

File.createNewFile()thowing IOException没有这样的文件或目录

我有一个写入日志文件的方法.如果文件存在,它应该附加到它,如果没有,那么我希望它创建一个新文件.

if (!file.exists() && !file.createNewFile()) {
    System.err.println("Error with output file: " + outFile
        + "\nCannot create new file.");
    continue;
}
Run Code Online (Sandbox Code Playgroud)

我有这个来检查是否可以创建一个文件.file是一个java.io.File对象.createNewFile抛出IOException:没有这样的文件或目录.自从我几周前写这篇文章以来,这种方法一直运作良好,并且最近刚开始这样做,虽然我不知道我能改变什么.我已经检查过,目录存在并且我有权限,但是我认为如果它因任何原因无法生成文件,它应该返回false.

有什么我不想让这个工作吗?

java file-io

32
推荐指数
4
解决办法
7万
查看次数

cc1plus:error:include:使用g ++编译时,对于定义的数据类型,值太大

我正在制作一个应该在Windows和Linux上编译的项目.我在Visual Studio中创建了项目,然后为linux创建了一个makefile.我使用VS在Windows中创建了所有文件.

它在VS中编译并运行完美,但是当我运行makefile并运行g ++时,我得到了

$ g++ -c -I include -o obj/Linux_x86/Server.obj src/Server.cpp
cc1plus: error: include: Value too large for defined data type
cc1plus: error: src/Server.cpp: Value too large for defined data type
Run Code Online (Sandbox Code Playgroud)

代码只不过是一个Hello World atm.我只是想在开始开发之前确保一切正常.我试过搜索但无济于事.

任何帮助,将不胜感激.

g++ visual-studio

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

dotnet核心应用以管理员身份运行

我有一个dotnet控制台应用程序,需要管理员权限才能运行.我找不到怎么做.在常规项目中,我将添加app.manifest并设置

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

但我无法想象如何在构建中嵌入它.

我该怎么做呢?

c# uac .net-core

19
推荐指数
4
解决办法
4367
查看次数

如何使线程等待JFrame在Java中关闭?

程序启动时,会创建一个新的JFrame.用户单击开始按钮后,将创建并启动一个线程.此线程执行的一部分是验证表单上的数据,然后使用该数据执行.一旦数据被验证,线程就会在原始帧上调用dispose(),然后创建一个充当控制面板的新JFrame.

还有一个程序的自动模式,根本不显示任何GUI,此模式从配置文件中读取数据,然后启动执行线程并运行所有内容,但不使用控制面板.

我希望程序在线程完成后结束,但是在GUI模式下,只有用户也关闭了控制面板.是否可以让线程等待帧关闭.我假设框架是从它自己的线程运行的?或者情况并非如此.

谢谢.

java user-interface multithreading

17
推荐指数
1
解决办法
3万
查看次数

游戏引擎开发问题

我正在考虑为我的课程最后一年项目制作一个简单的游戏引擎.我希望它是模块化和可扩展的,这样如果我有时间,我可以添加新的部件.例如,我将制作一个完全独立于其他系统的图形引擎,一旦完成,我可以添加一个物理引擎等.我还想制作一个工具集来配合这个引擎.对于我想使用C#的工具,但我不确定库.我的问题是,如果我想要一个C#GUI程序,我可以引用一个用C++编写的库吗?如果我在C#中创建了一些库但想在C++游戏中使用它们,那么也会有任何性能问题.

我想尽可能地避免使用C++,我的经验表明,对于一个项目而言,使用C#或Java等开发时间要高得多.我的图形开发将在OpenGL中,这就是我所教的全部内容.我们只用C++完成了这个,但我已经看到像SharpGL这样的项目允许使用C#进行开发.这有什么性能问题吗?我不是在寻找一款速度极快的顶级图形游戏.显示我的引擎工作很可能很简单.我的引擎可能不会那么好,因为我只有一年而且我自己工作.

对此有任何建议将不胜感激.我仍然处于计划阶段,所以彻底改变我想做的事情并不会太多.我想要预先解决我可能遇到的任何重大问题.

谢谢

c# c++ opengl performance

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

如何使另一个线程在Java中休眠

我有一个扩展Thread的类.这个线程在运行时花费大部分时间睡觉,它将执行检查,如果为true则执行简单操作,然后睡眠1/2秒并重复.

该类还有一个由其他线程调用的公共方法.如果调用它,我希望线程在睡眠时睡眠时间更长,如果不是则立即睡觉.我试图让这个.sleep但似乎这仍然睡在当前的线程,它抱怨方法睡眠是静态的,应该静态访问.

这个程序显示我的问题,当调用CauseSleep时我想让它停止打印数字,直到睡眠结束.

public class Sleeper {
    public static void main(String[] args) {
        new Sleeper();
    }
    public Sleeper() {
        System.out.println("Creating T");
        T t = new T();
        System.out.println("Causing sleep");
        t.CauseSleep();
        System.out.println("Sleep caused");
    }
    public class T extends Thread {
        public T() {
            this.start();
        }
        public void run() {
            for (int i = 0; i < 30; i++) {
                System.out.println("T Thread: " + i);
                try {
                    Thread.sleep(100);
                } catch (InterruptedException e) {
                }
            }
        }
        public void CauseSleep() {
            try {
                this.sleep(2000); …
Run Code Online (Sandbox Code Playgroud)

java multithreading

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

dotnet测试仅测试解决方案上的项目

使用Visual Studio 2017和Dotnet Core 2.0 SDK,我有一个包含多个项目的解决方案。其中一些是测试项目,有些是源项目。

我可以dotnet test在根解决方案方向上运行,它将尝试在该解决方案的所有项目中发现测试。

但是,源项目没有测试,因此会显示错误。除进程的退出代码为1之外,所有测试都可以运行并通过。这意味着我们的CI构建失败。

有什么办法让它仅在解决方案的测试项目上运行?它们位于文件系统和解决方案目录下的测试目录中,但是我找不到任何过滤它们的方法。

我已经编写了一个Powershell脚本来为测试文件夹中的每个项目运行它,但是我们的CI服务器正在使用Linux和Docker映像microsoft / dotnet:2.0-sdk,因此Powershell脚本不会在那里运行。

我可以用Bash编写它,但是它不能在Windows上运行。

我唯一的另一个想法是为同时具有dotnet和powershell的构建制作自定义docker映像。

powershell continuous-integration unit-testing .net-core visual-studio-2017

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

将STDOUT复制到文件而不停止显示在屏幕上

我正在制作的程序旨在无人值守运行,因此我将stdout和stderr流重定向到日志文件.虽然这没有任何问题,但我仍在制作和调试软件,我希望它也显示在屏幕上.这可能吗?

重定向我使用过的流

System.setErr(logWriter);
System.setOut(logWriter);
Run Code Online (Sandbox Code Playgroud)

谢谢.

java stdout stderr

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

如何在不强制的情况下杀死Java中的进程?

我有一个运行许多其他程序的Java程序.一旦用户完成,他们就有一个按钮来杀死所有进程,这应该会杀死所有正在运行的东西,但它应该强制执行它们.这些其他进程中的至少一个也是用Java编写的,并且具有许多关闭挂钩,因为它在退出时自动保存首选项文件并杀死它自己启动的进程,例如.

    Runtime.getRuntime().addShutdownHook(new Thread() {
      public void run() {
        if (process != null)
            process.destroy();
      }
    }
Run Code Online (Sandbox Code Playgroud)

当主进程调用destroy时,上面的代码不会在子进程上运行.无论如何,我可以终止进程,这样仍然可以运行吗?

我从Perl移植它会杀死它(9,@ kill_process);

谢谢.

java

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