博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
线程之实现
阅读量:4880 次
发布时间:2019-06-11

本文共 861 字,大约阅读时间需要 2 分钟。

进程其实就是一个应用程序,列如迅雷就是一个进程,多个下载任务就是多个线程。一个进程包含多个线程。

在系统中要执行某个进程主要看能不能获取到cpu的资源,也就是cpu的时间片,这个是无法控制的,cpu给每个进程一定的执行时间,时间到就到下一个进程。

线程的生命周期:

 

 

 

java中实现线程的方式有两种:

1.继承Thread类。

继承Thread类后需要重写run方法,然后再run方法中写需要执行的代码。可以通过Thread实现类也就是ThreadTest类的有参构造方法来给线程命名,或者通过getName获取线程名字。

实际上java程序在运行时会启动两个线程,一个是主线程,一个是垃圾回收线程,可以使用setName方法设置线程的名字,调用start方法即可开启一个线程。

也可以调用Thread.currentThread方法设置当前线程的名字,也就是主线程的名字。

2.实现runnable接口。

实现runnable接口也要重写run方法,同样的可以调用Thread.currentThread.getName获取当前线程的名字。

继续Thread类和实现Runnable接口的区别:

1.因为java中是单继承,所以继承Thread类就无法再继承其他类。

2.虽然都是run方法,但是两个run方法是不同的,继承Thread类的run方法是写在继承Thread类的子类中,实现接口的run方法是写在Runnable接口的实现类的run方法中。

3.实现Runnable接口的方式适合多个线程去处理同一个资源,

 

继承类如果要开启多线程需要实例化类两次,就会引起资源的不统一,比如卖票就会出现一个线程卖100,总共就会卖出200张票,但是也可以通过加static关键字解决。实现接口就不会出现这种情况,因为只用实例化一次类。

 

3.线程优先级问题:

线程优先级默认是5,有1,5,10,但是只是概率并不是一定的。

 

转载于:https://www.cnblogs.com/javazyh/p/10847778.html

你可能感兴趣的文章
gson所需jar包
查看>>
最干净的pyinstaller打包成exe应用程序方法
查看>>
Python中的数据类型
查看>>
讲给普通人听的分布式数据存储【转载】
查看>>
关于最短路
查看>>
Hbase记录-zookeeper部署
查看>>
Python pexpect出现错误‘module have no attribute "spawn" 解决办法
查看>>
vs2008 C# 怎么调试C++ dll[转]
查看>>
PHP的魔术方法
查看>>
警惕麦咖啡的"缓冲区溢出保护"引起的ASP.NET 中 System.OutOfMemoryException 的错误...
查看>>
optimizer_dynamic_sampling
查看>>
HTML(WEB)开发day05
查看>>
序列合并求前K小项 POJ2442
查看>>
unity点选构建Mesh并保存OBJ
查看>>
python kmeans实战 - 单机一层聚类(小玩具哦),下次再弄个分布式多次聚类
查看>>
Java主要有那几种文件类型?各自的作用是什么?
查看>>
我的第一个python web开发框架(29)——定制ORM(五)
查看>>
2017.11.18 手把手教你学51单片机-点亮LED
查看>>
xml的创建与解析
查看>>
grep不区分大小写查找字符串方法
查看>>