相关疑难解决方法(0)

Java中的"实现Runnable"与"扩展线程"

从我在Java中使用线程的时间开始,我发现了这两种编写线程的方法:

implements Runnable:

public class MyRunnable implements Runnable {
    public void run() {
        //Code
    }
}
//Started with a "new Thread(new MyRunnable()).start()" call
Run Code Online (Sandbox Code Playgroud)

或者,用extends Thread:

public class MyThread extends Thread {
    public MyThread() {
        super("MyThread");
    }
    public void run() {
        //Code
    }
}
//Started with a "new MyThread().start()" call
Run Code Online (Sandbox Code Playgroud)

这两个代码块有什么显着差异吗?

java multithreading runnable implements java-threads

2023
推荐指数
30
解决办法
67万
查看次数

ThreadPool不会按顺序运行任务

Executor特意使用框架Executors.newCachedThreadPool();
我有一个Runnable例如100
的列表.前50个,每个创建一个值(存储在列表中)以供最后50个使用.
我想如果我按顺序传递Runnables executor.execute()它们在列表中,它们也将以相同的顺序执行.
但这不会发生.
这些任务似乎是以随机顺序执行的,它们是交错的,不是按顺序执行的.
这是假设工作的方式吗?有办法解决这个问题吗?

谢谢

java multithreading executorservice executor

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

动态线程池

我有一个长时间运行的过程,它监听事件并进行一些密集的处理.

目前我Executors.newFixedThreadPool(x)用来限制同时运行的作业数量,但是根据一天中的时间和其他各种因素,我希望能够动态增加或减少并发线程的数量.

如果我减少并发线程的数量,我希望当前正在运行的作业能够很好地完成.

是否有一个Java库可以让我控制并动态增加或减少线程池中运行的并发线程数?(该类必须实现ExecutorService).

我必须自己实施吗?

java multithreading executorservice threadpool threadpoolexecutor

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