java start()和run()的区别以及java中并发和并行的概念
java start()和run()的区别
1、概念区别
start():产生线程对象后,调用start()方法启动线程,线程处于运行状态RUNNABLE中的Ready就绪状态中,此时线程等待被CPU调度,调度后再执行run()方法,使用start()方法启动线程,真正实现了多线程。
run():run()方法是Thread中一个普通方法,直接用线程对象调用run()方法,会运行在主线程中。因为程序中只有一个主线程,当程序中有两个线程时,直接调用run()方法,程序按照顺序执行,没有实现多线程。
2、实例
public static void main(String[] args) {
Thread t1 = new Thread(new Runnable() {
@Override
public void run() {
System.out.println(Thread.currentThread().getName());
}
},"unstoppbale_t");
t1.start();
}
java中并发和并行的概念
由于任务数量远远超过CPU核心数量,因此操作系统会自动把任务调度到每个核心上执行。
1、概念
并发:多个进程在一个CPU下采用时间片轮转方式,在一段时间内,让多个进程得以推进,类似“雨露均沾”思想,一个CPU在短时间内会自动调度不同任务。
并行:多个任务在多个CPU分别同时运行,这称之为并行。
2、区分
操作系统中将并发性与并行性做明显区分,主要从微观角度而言:
并发性:单处理机情况下,多个进程在同一时间间隔运行
并行性:多处理机情况下,多个进程同时运行
举个例子理解并发与并行机制:
客户去银行办理业务
并发性:为了让银行服务人员更好地服务客户,规定每个客户的业务办理时间(防止其他客户长时间等待),银行服务人员将时间片轮转思想应用到客户业务中,当该客户业务的办理时间到达规定时间,银行人员暂停当前业务随之去办理下一个客户的业务,该客户等待下一次时间片的到来。从长时间来看,因为时间片较短,一个银行服务人员被认为可同时服务多个客户,这就可以理解为基于时间片的进程轮转管理机制,就是所谓的并发性。
并行性:银行如果非常有钱,雇佣了很多的工作人员,此时一个客户就会有一个工作人员对接,所有客户的业务真正实现了同时处理,这种机制就称为并行性。
以上就是java中并发和并行的概念介绍,希望对大家有所帮助。更多关于“java培训”的问题,欢迎咨询千锋教育在线名师。千锋教育多年办学,课程大纲紧跟企业需求,更科学更严谨,每年培养泛IT人才近2万人。不论你是零基础还是想提升,都可以找到适合的班型,千锋教育随时欢迎你来试听。