1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > java多线程编程_Java多线程编程

java多线程编程_Java多线程编程

时间:2023-03-19 23:03:33

相关推荐

java多线程编程_Java多线程编程

本文主要对Java多线程编程进行深入研究。本文通过查看源代码及参考资料等方式研究。参考文章: Java多线程编程深入详解。

由问题入手:

问题1:

2种创建Thread的方式都是实现run()方法,但为什么Thread执行却调用start()方法?

Thread.run()方法可以被current Thread直接调用,使得current Thread执行run()函数。而当current Thread调用Thread.start()方法,会导致2个线程并发执行:调用start()方法的current Thread会返回;JVM新创建Thread来调用run()方法。

*

注意:start()方法为synchronized方法,防止同一时间被多次调用。该方法的核心方法start0()方法为native方法。

native关键字表示该方法是原生方法,使用C/C+编写并以DLL导入由Java调用。实际上java就是在不同的平台上调用不同的native方法实现对不同操作系统的访问的。native方法由操作系统实现并由java通过JNI接口调用。

其实,这里使用了template pattern,即完成一件事需要特定的某些步骤(父类),但对于不同情况下,这些步骤的具体实现不同(子类)。父类中定义算法的骨架,而在子类中提供骨架中操作的具体实现。父类中定义算法的函数可定义为final method,防止子类重定义,同时,定义步骤的函数可定义为protected method,不让外部知道实现细节。(做不同菜)

问题2:

Thread和Runnable是什么关系?

public

Thread class实现了Runnable interface,而且Thread中具有Runnable field。Thread class使用了strategy pattern。

Strategy pattern:针对一组算法,将每个算法封装到具有共同接口的独立类中,实现算法能够自由替换。我们实现Runnable来得到具体的算法,用Runnable初始化Thread类。这样,实现线程Thread与具体执行的业务逻辑分离的目的。(+-*/不同计算)

共享数据被多个线程共同使用,需要添加锁进行保护。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。