之前一直会把阻塞和同步的概念搞混淆 , 这两天看了下B站的Netty课程 总算搞清楚了同步与阻塞的概念,如下:
同步是指执行某个任务(做某件事件)需要自己主动去执行(对于Java里面就是调用一个方法或者执行一段逻辑,需要调用者线程主动执行), 反之即异步 , 即调用者不需要主动去执行对应代码(其他线程去执行)
public class TestSyncAndBlock {
@Test
public void testSync () {
// 当前线程调用doSomething 方法 是由当前线程去执行的称为同步
this.doSomethingSynchronized();
}
@Test
public void testASync () {
// 当前线程调用doSomething 方法 是由其他线程去执行的称为异步
this.doSomethingASynchronized();
}
public void doSomethingSynchronized() {
System.out.println(Thread.currentThread().getName() + " : I'm doing something now !!!");
}
public void doSomethingASynchronized() {
new Thread(()->{
System.out.println(Thread.currentThread().getName() + " : I'm doing something now !!!");
}).start();
}
}
阻塞是指获取一件事情的结果时,当前线程是否等待对应结果,等待即为阻塞 , 不等待即为非阻塞



