复习Java高级特性(一)

JAVA高级特性复习


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

在开发的过程中发现很多技术虽然用到的少,但是其思路和设计理念仍然是非常重要的,比如io出现频率极高,而且是系统操作中出现问题或者系统瓶颈产生的主要部分,几乎可以和数据库技术相比拟,多线程应用不算很多,但也很有必要,未来分布式计算等都需要掌握相关知识.


一、多线程是什么?

程序\进程\线程 程序是静态的代码. 进程是执行中的程序,占据了一定的内存控控件,并具备所需的相关的数据. 线程是在程序中执行的操作,比如在java中至少运行了三个线程,包括主线程,gc垃圾回收线程,守护线程,保证线程不会关闭.

并行与并发:
并行是多个cpu同时执行多个任务,并发是单个cpu以分片形式进行伪并行工作.

二、多线程使用步骤

1.多线程的创建

代码如下(创建方式一):

class mythread extends Thread{//继承于Thread类,拥有子类
//重写继承过来的run方法
@override
public void run(){
//相应的方法进行使用
system.out.print(T和read.currentThread().getName()+"这是一个多线程任务!");

}
}

调用:
public static void main(string[] args){
mythread m=new mythred();
m.start();//开始执行另一个线程的相关方法.这样才是启动另一个线程
m.run();//这样只是调用该对象的方法,没有启动新的线程
//同一个线程不可以启动两次,否则会报非法异常,否则就需要新建一个t2,如果需要就要重新创建线程对象
} 

创建方法二,实现runnable接口
1.创建以恶搞实现了runnable的类
2实现类去实现runnable中的抽象方法:run()
3.创建实现类的对象
4.将此对象作为参数传递到Thread类的构造器中,创建Thread类的对象
5通过Thread类的对象调用start()

两种实现方法中,实现接口更好,java不支持多重继承,所以使用接口更好.而且更是和共享数据的情况.

2.Thread的常见方法

方法如下:

start():启动当前线程,调用当前线程的run方法
run():通常需要重写Thread类中的词方法,返回执行当前代码的线程
currentThread():静态方法,返回当前代码的线程
getname()返回当前线程的名字
setname()设置当前线程的名字
yield()释放当前cpu执行线程,给另一个空余线程,但有可能重新分配给此线程
join()会让执行本方法的线程执行完所有操作之后才继续另一个线程(在县城a中调用线程b的join(),此时线程进入b线程,知道b结束在执行a)
stop()当执行此方法时,直接结束,不建议使用
sleep(mills),静态方法,不写类名就是当前线程.阻塞指定的毫秒数,不能抛出异常,因为继承的父类没有抛出(继承规则是子类抛出的异常不能比父类更大.在这里父类没有抛出异常,所以run也不能抛出异常).
isAlive()判断当前线程是否还存活.

线程的生命周期图在这里插入图片描述

3.线程调度

通过时间片来抢占cpu资源

根据优先级进行资源的选定,分为10个等级,等级越高是越高的. max:10,min 1,default 5. 设定线程优先级:H1.setproority()

总结

加油吧,套用一句比较中二的话,唯热爱可抵岁月漫长.

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值