java电商项目,什么场景需要使用多线程?
场景一:一个业务逻辑有很多次的循环,每次循环之间没有影响,比如验证1万条url路径是否存在,正常情况要循环1万次,逐个去验证每一条URL,这样效率会很低,假设验证一条需要1分钟,总共就需要1万分钟,有点恐怖。这时可以用多线程,将1万条URL分成50等份,开50个线程,没个线程只需验证200条,这样所有的线程执行完是远小于1万分钟的。
场景二:需要知道一个任务的执行进度,比如我们常看到的进度条,实现方式可以是在任务中加入一个整型属性变量(这样不同方法可以共享),任务执行一定程度就给变量值加1,另外开一个线程按时间间隔不断去访问这个变量,并反馈给用户。
总之使用多线程就是为了充分利用cpu的资源,提高程序执行效率,当你发现一个业务逻辑执行效率特别低,耗时特别长,就可以考虑使用多线程。不过CPU执行哪个线程的时间和顺序是不确定的,即使设置了线程的优先级,因此使用多线程的风险也是比较大的,会出现很多预料不到的问题,一定要多熟悉概念,多构造不同的场景去测试才能够掌握!
java中如何保证多线程顺序执行?
谢邀。
首先java多线程的目的是为了并发执行而不是顺序执行,如果多线程顺序的话那就和单线程没有区别。
但是“顺序”还是有意义的,就是逻辑上要求几个操作保证顺序,这里就指的就是as if serial。即多线程大多数时候都是并发执行,但是在访问同步资源时通过同步器让线程顺序,如synchronize,lock,aqs等。
同时在cpu指令层面也是同样,指令重排序看起来是乱序执行,但在执行效果上和顺序一样。这些机制的初衷都是:让程序执行的更快。
希望回答有帮助。