运行两个线程和运行两个调用相同函数的类之间的区别



我正在Redis Steram[XREAD和XADD]上探索阻塞读取命令。使用XREAD,我们可以获得在执行XADD时释放的多客户端阻塞读取。这个

我观察到以下两种不同的行为:

案例:1

public static void main(String[] args){
Runnable t1 = new Runnable(){
public void run(){
function_to_read_block();
}
};
Runnable t2 = new Runnable(){
public void run(){
function_to_read_block();
}
};
new Thread(t1).start();
new Thread(t2).start();
}

在这种情况下,当redis-cli上执行2 XADD命令时,获取的锁将被释放。

案例:2

public class ClassA {

public static void main(String[] args){
function_to_read_block()
}
}
public class ClassB {

public static void main(String[] args){
function_to_read_block()
}
}

同时运行这两个类,1 XADD命令将同时释放两个读锁。[这也是我从案例1中预期的理想行为]

有人能解释一下为什么这两种情况有区别吗?运行两个线程与同时运行两个单独调用同一函数的类有何不同??

对于redis,我使用的是生菜库。【同步RedisCluster连接】

正如我所知,要同时运行两个类,必须使用两个线程,所以在情况2中,它们是在相互跟随的情况下运行的,在情况2中你的代码也没有启动,你还需要函数调用。。

相关内容

  • 没有找到相关文章

最新更新