两者都创建线程的方式,不同之处在于前者是类,后者是接口。使用的时候重写他们即可。
想象此时有一条马路,走的人多了道路开始变得堵塞,如果拓宽为多车道即可解决该问题。
这便是多线程的例子。进程与线程是老生常谈的话题,进程是静态的程序运行时的过程,而一个进程可以包含若干个线程,最少的情况就是只有一个主线程。在java中还会有一个gc线程用于回收资源。
线程是cpu调度和执行的基本单位,而很多多线程是模拟出来的,并不是真正的多线程,只是切换的足够快,产生了多线程的错觉。
流程如下:
而我们要运行的内容就放在run方法内。
public class TestThread1 extends Thread {
//重写Thread类的run方法,将要执行在线程中的任务放入其中
@Override
public void run() {
for (int i = 0; i < 20; i++) {
System.out.println("reading..."+i);
}
}
public static void main(String[] args) {
//创建一个TestThread1对象的示例
TestThread1 testThread1 = new TestThread1();
//调用start方法开启线程
testThread1.start();
//如果我们调用的是run方法,就会先执行testThread1的内容,再执行主线程的
//这样就违背了我们要做多线程的想法
for (int i = 0; i < 2000; i++) {
System.out.println("studying..."+i);
}
}
}
如果直接调用run方法,相当于只有主线程在运行,而调用start方法时会开辟一个新的子线程去执行内部的run方法。
流程如下:
public class TestThread2 implements Runnable {
//重写Runnable接口的run方法,将要执行在线程中的任务放入其中
@Override
public void run() {
for (int i = 0; i < 20; i++) {
System.out.println("reading..."+i);
}
}
public static void main(String[] args) {
//创建一个TestThread2对象的示例
TestThread2 testThread2 = new TestThread2();
//new一个线程对象,传入Runnable示例并调用start方法执行
new Thread(testThread2).start();
for (int i = 0; i < 2000; i++) {
System.out.println("studying..."+i);
}
}
}
Thread类同样也实现了Runnable接口。通过上面的例子可知,当我们使用Runnable方法创建线程时,同样需要使用Thread来执行。前人总结如下:
无论使用两种方法的哪一种,都会new Thread,然后执行我们重写的run方法。
用法上,如果有复杂的线程操作,就继承Thread;如果只是简单的执行一个任务,就实现runnable。
文章浏览阅读2w次,点赞2次,收藏9次。将下面的命令复制,然后在命令行输入框中粘贴,最后按下回 车键。 FORFILES /P %WINDIR%\servicing\Packages /M Microsoft-Windows-InternetExplorer-*11.*.mum /c "cmd /c echo Uninstalling package @fname && start /w pkgmgr /up:@fname /q_win7自带ie11降级ie8命令
文章浏览阅读1.1k次。首先是技术栈的不同。Web 开发主要以 HTML 来描述结构,以 CSS 来描述表现,以JavaScript 来描述行为。而可视化则较少涉及 HTML 和 CSS,它更多地要同浏览器的Canvas、SVG、WebGL 等其他图形 API 打交道。这是因为,Web 开发以呈现块状内容为主,所以 HTML 是更合适的技术。而可视化开发因为需要呈现各种各样的形状、结构,所以,形状更丰富的 SVG 以及更底层的 Canvas2D 和 WebGL 就是更合适的技术了。其次,Web 开发着重于处理普通的文..._用python制作可视化面板和web前端制作有什么区别
文章浏览阅读4.4k次,点赞2次,收藏4次。今天因为需要往U盘里面拷贝一些资料,然后本来以为拷贝完了,就直接把U盘拿下来了,然后发现提示文件拷贝失败,原来文件还没有拷贝好。 只好把U盘插上重新拷贝,然后就发现所有的文件都变成了只读文件,不能拷贝和删除U盘中的内容,然后我将文件权限改了,但是提示失败,,,,很绝望。在终端直接拷贝也不行。下面说解决办法:首先将U盘安全移除,然后重新插入,我的问题就解决了。。。。啊哈哈哈..._uosu盘文件有锁
文章浏览阅读423次,点赞8次,收藏11次。MFC实现局域网通信(附完整源码)_mfc网络通信
文章浏览阅读1.3k次。需求背景一般对于一个播放器,应该支持如下几种显示模式:等比例,最大化区域显示,不裁剪等比例,最大区域显示,裁剪拉伸显示,铺满全屏要实现这几种显示模式。其实只要对播放控件的布局进行些许调整即可。那EasyPlayer是怎么实现的呢?解决方案EasyPlayer是使用一个PlayFragment进行视频播放,该类实现了一个setScaleType的方法来进行显示模式设定(或切换)。..._easyplayer rtsp如何使画面最大化
文章浏览阅读3.6k次,点赞3次,收藏5次。在之前的文章里我们讲到了展讯平台camera驱动移植的简单介绍。然而在安卓q开始,展讯camera这一块的目录结构都进行了较大的改变。在这里我们主要讲一下安卓q的camera驱动移植。此处仅陈述点亮,OTP、AF、FLASH等等暂未配置。_展讯resource_cost
文章浏览阅读5.8w次,点赞20次,收藏104次。什么是xml文件格式_xml格式
文章浏览阅读1.6k次,点赞4次,收藏2次。【代码】百度地图bd09II坐标转换天地图CGCS2000坐标。_百度地图转天地图经纬度
文章浏览阅读4.9k次,点赞9次,收藏43次。Win10的Linux子系统Ubuntu安装图形界面陈拓 2021/07/25-2021/07/261. 概述Win10的linux子系统Windows Subsystem for Linux(简称 WSL)之Ubuntu安装见文章:《Win10启用Linux子系统安装Ubuntu》https://zhuanlan.zhihu.com/p/341394468https://blog.csdn.net/chentuo2000/article/details/112131624W
文章浏览阅读2.4k次。实验环境本地 MacOS 10.14.4远程服务器CentOS 7.5 64位Firewalld本地命令前缀 [admin@MacBookPro]$服务器命令前缀 [A@CentOS]$ 最近在建站后,发现不到2天我的小破站就有600次ssh远程登录的尝试。心中不免一阵寒意,为了解决这个问题特地读取了ssh官方的文档,对网站的ssh登录进行了一些措施。 首先要了解 SSH免密登录的原理,免密登录需要使用 ssh 的非对称加密方式,登录无需密码,但是需要携带秘钥。本地若想登录._ssh ip默认为非root如何调
文章浏览阅读323次。ypzdnoracle-e7-bb-8f-e5-85-b8-e6-95-99-e7-a8-8b.pdf-e6-98-af-e7-99-be-e5-ba-a6-e7-bd-91-e7-9b-98-e5-ad-98-e5-82-a8-e5-86-85-e5-ae-b9-3cbr-2f-3eoracle-e7-bb-8f-e5-85-b8-e6-95-99-e7-a8-8b.pdf-e7-9a-84-e..._%e5%9b%bd%e7%8e%8b%e6%b8%b8%e6%88%8f%e5%a6%88%e5%a6%88
文章浏览阅读145次。Cheering Gym-101522C_cheering lsc pcms