0
点赞
收藏
分享

微信扫一扫

213 01 Android 零基础入门 03 Java常用工具类 05 Java多线程 02 线程的创建 02 实现Runnable接口创建线程

213 01 Android 零基础入门 03 Java常用工具类 05 Java多线程 02 线程的创建 02 实现Runnable接口创建线程

本文知识点:实现Runnable接口创建线程

​说明:因为时间紧张,本人写博客过程中只是对知识点的关键步骤进行了截图记录,没有对截图步骤进行详细的文字说明(后面博主时间充裕了,会对目前的博客编辑修改,补充上详细的文字说明);有些步骤和相关知识点缺乏文字描述,可能会难以理解。读者如有不明之处,欢迎博客私信与本人交流,共同进步。

实现Runnable接口创建线程

213 01 Android 零基础入门  03 Java常用工具类 05 Java多线程 02 线程的创建 02 实现Runnable接口创建线程_代码实现


213 01 Android 零基础入门  03 Java常用工具类 05 Java多线程 02 线程的创建 02 实现Runnable接口创建线程_代码实现_02

Runnable接口创建线程的代码实现

代码实现:

213 01 Android 零基础入门  03 Java常用工具类 05 Java多线程 02 线程的创建 02 实现Runnable接口创建线程_代码实现_03


213 01 Android 零基础入门  03 Java常用工具类 05 Java多线程 02 线程的创建 02 实现Runnable接口创建线程_代码实现_04

运行结果:同样显明线程运行是有随机性的。

213 01 Android 零基础入门  03 Java常用工具类 05 Java多线程 02 线程的创建 02 实现Runnable接口创建线程_微信_05


213 01 Android 零基础入门  03 Java常用工具类 05 Java多线程 02 线程的创建 02 实现Runnable接口创建线程_微信_06

将程序改写为2个线程多次运行:

213 01 Android 零基础入门  03 Java常用工具类 05 Java多线程 02 线程的创建 02 实现Runnable接口创建线程_代码实现_07


Thread0先运行了10次,之后Thread1又运行了10次。

213 01 Android 零基础入门  03 Java常用工具类 05 Java多线程 02 线程的创建 02 实现Runnable接口创建线程_创建线程_08


再次执行程序:Thread1先运行了10次,之后Thread0又运行了10次。

213 01 Android 零基础入门  03 Java常用工具类 05 Java多线程 02 线程的创建 02 实现Runnable接口创建线程_创建线程_09


线程的运行都是随机的,还可能出现的是:
Thread0运行几次,之后Thread1运行几次,之后Thread0再运行几次,最后Thread1再运行几次;
出现这种交叉运行的情况,因为线程运行本来就是随机的。
将代码修改为如下的情况:

213 01 Android 零基础入门  03 Java常用工具类 05 Java多线程 02 线程的创建 02 实现Runnable接口创建线程_代码实现_10

多次运行代码:

213 01 Android 零基础入门  03 Java常用工具类 05 Java多线程 02 线程的创建 02 实现Runnable接口创建线程_创建线程_11


这里看起来好像只有Thread0一个线程一样,其实不是这样,只是Thread0优先执行,把10次都执行完了。Thread1就没有执行的机会了。

213 01 Android 零基础入门  03 Java常用工具类 05 Java多线程 02 线程的创建 02 实现Runnable接口创建线程_创建线程_12

出现这种结果的原因是什么呢?
是因为Runnable中的run()方法中的代码可以被多个线程共享, 这多个线程其实就是Thread类的实例,即例子中的t1和t2。
即pr可以被t1和t2共享:这是多个线程处理同一个资源的情况。
上述代码中的int i就相当于要处理的资源,然后t1和t2共享了i这个资源,所以t1和t22个线程一共运行了10次。



举报

相关推荐

0 条评论