我有一个Ingres DB with History表,它记录数据库事件,如插入、更新和删除。我有一个生产者,这将是多线程。这个生产者将读取History表,以找到要选择的表和行,然后将该行添加到Kafka主题中。现在生产者需要确保将事件添加到Kafka主题中,其方式与History表登录的方式相同。因此,使用者读取它们的顺序与它在History表中记录的顺序相同,并在Postgrace上执行它。
我可以将这些数据生成多个生产者。示例
Producer1 has message 1 to 5
producer2 has message 6 to 10
producer3 has message
我有一个用例,其中我需要进行数据库调用来检索runAsync()中的一些数据。我有以下方法: return CompletableFuture.runAsync(() -> {
// Line 1
// Line 2 - fetch from database
// Line 3 - use the retrieved value to set field on an object
}) 我的问题是-第三行可以保证在第二行之后按顺序执行吗?有什么我需要注意的问题吗?
是否有任何保证,如果一个if-else if-else if-else块,是测试的顺序,他们已经写。
我之所以问这个问题,是因为我经常试图通过将最常见的情况放在第一位来优化我的代码,我想知道编译器所做的一些优化是否可以改变if测试的顺序。
所以,如果我在写这样的代码:
if (cond1) // First if (for the case I have the most often)
{
doSomething1();
}
else if (cond2) // Second if (for the second case I have
假设我有两个变量:
volatile int a = 0;
int b = 0;
它们在两个线程之间共享。现在,在第一个线程中,我将按照下面的顺序修改这些变量:
a = 1;
b = 2;
在第二个线程中,我这样做:
while (true) {
if (b == 2)
assert(a == 1);
}
是否保证第二个线程不会失败?这意味着第二个线程读取a和b的写入值的顺序与第一个线程编写的顺序相同?
如您所见,我使a易失性和b非易失性。那么,我的问题是,易失性修饰符是否能保证内存写入的顺序?如果我把b也做成volatile,它会改善情况吗?
或者保证订单的唯一方法是
我有一个关于星火批内顺序处理的问题。这里是一个程式化的版本的问题,我试图得到的答案,以保持简单。
import org.apache.spark.sql.SparkSession
val spark = SparkSession
.builder()
.appName("Simple Dataframe Processing")
.config("spark.some.config.option", "some-value")
.getOrCreate()
// For implicit conversions like co