写这篇博客源于想对比一下单线程js和多线程java两种语言的区别。
定义区:
单线程:只能执行一个任务,只有在完成执行后,才能继续执行其他的任务。
多线程:有多个线程,可以同时执行多个任务。
同步:当发送一个请求后,必须等待响应之后才能继续执行后面的程序。
异步:但发送一个请求后,可以不需要等待响应,可以直接执行后续的程序。
js中如果触发多个事件(事件驱动),那么要按照事件顺序逐个执行,这与java中多线程的各个单独线程的执行情况是一致的,在js中值得一提的是Ajax 技术,这是个异步方法,即在Ajax发送一个请求之后,我可以继续执行后面的程序,包括click等事件也是异步的,直到响应后,再将callback放入等待队列中。对于一整个Ajax来说,可以吧它当作是一个同步的,只有等请求得到响应之后,我才能执行Ajax的callback。
java中如果有多个任务,可以将他们分配到不同的线程中去执行,实现并发,每个单独线程中同步和异步情况和js中单线程情况是一致的。但多线程就存在一个资源共享的问题,就关于线程安全的问题,这是另一个问题,不予赘述。