1.场景1:工作量太大,需要多人一块儿干,以缩短工期
比如要完成书稿校对工作。
显然一个人校对太慢了,那就多叫几个人吧!每个人分一个章节,同时进行校对,速度一下就上来了。
如下
图所示:
如果程序需要重复执行一段逻辑,每次执行又互不影响,那么你可以考虑多线程,每个线程执行总量的一部分,最后再把每个线程执行的结果合并。
2.场景2:实现分工,协作
饭店一般有收银员、厨师、传菜员、清洁员。
每个人各司其职,大家配合工作。
每种角色的员工只关心自己的输入和输出,比如厨师的输入就是客户的点菜单,输出就是饭菜。
而厨师的输入则是上个环节收银员的输出。
这样做的好处是每个人专注自己的工作,有助于效率的提升。
每个环节都有缓冲,订单的列表就是一个缓冲,调节两个环节速率的不匹配及不稳定。
3.场景3:排队的同时,不耽误做其他事情
比如B超的流程优化,你先去B超排队取号,然后可以先去做其他项目的检查,当快轮到你的时候,短信通知你去做B超。
这其实就是java多线程中的Future模式。
这种模式下,主线程不会因为一个耗时的业务 *** 作而阻塞,主线程可以单起一个线程去处理耗时
的 *** 作,主线程逻辑继续执行,等用到另外线程返回的数据时,再通过Future对象获取。
1.继承Thread类
2.实现Runnable接口
3.使用FutureTask
4.使用Executor框架
争夺共享资源,需要加锁同步
4.看若兄弟,实如父子-----Thread和Runnable详解1.继承Thread类
start方法调用了start0方法,start0是一个native方法(JNI方法),JNI(Java Native Interface)是java和其它语言的交互方式,
start0会调用run方法。
2.实现Runnable接口
Thread类的run方法:
@Override
public void run() {
if (target != null) {
target.run();
}
}
这里的target被设置为你实现业务逻辑的Runnable实现。
java多线程使用了模板方法,Thread负责线程相关的逻辑,业务逻辑则被剥离出来让Runnable的实现类去实现。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)