Java线程概述

线程、进程、程序区别及联系

程序:一段静止的代码

进程:正在执行的程序,进程是操作系统进行资源分配的最小单位。

线程:进程进一步细化成线程,是进程内部的最小执行单位,是操作系统进行任务调度的最小单位,线程隶属于进程

上面三个的具体应用:

在上面的三大件中,我们的程序文件就存储在硬盘中,当我们运行某个app(如qq程序),这时就由操作系统将qq进程调入内存中,当然一个进程会有多个线程,哪些线程需要进入cpu执行,也需要操作系统进行调度。

java中创建线程

注:main方法启动主线程

创建线程方式一:创建的类继承java.long包中的thread类

同时重写run方法;

创建好我们自定义的线程类后,我们就可以创建线程了,注意,多次方法的调用并不是多线程,只是一个线程的多个任务;

创建线程方法应该如下:创建我们自定义对象的实例后,调用start方法,在main主线程中启动一个新的线程。

创建线程方式二:创建的类实现Runable接口,重写run方法,作为任务类。

这个类可以成为线程任务类,这个类并不能直接创建线程,而是通过Thread类的构造方法创建Thread类的对象,这个类只是用来在run方法中提供任务。

通过Thread类的构造方法创建Thread类的对象:

二者区别:

继承thread类:这个类就不能再继承其他类了(java不支持多继承)

实现runnable接口:这个类可以继承其他类

下面是一些java继承的类型

常用方法
t.start();//启动线程,在操作系统中注册,加入到就绪队列,并不是立即执行
t.Setname("名字");//为线程设置名字
Thread t=new Thread(mt,"自定义名字");//以构造方法的方式设置名字
Thread.currentThread.getname();//获取正在执行的线程的名字
t.getpriority();//获取此线程的优先级1~10,默认都是5
t.setpriority(1);//设置线程的优先级,高优先级的先执行
Thread.sleep(1000);//在run中,让进程休眠指定时间(1000毫秒),此时从运行队列进入阻塞队列,睡眠时间结束进入就绪队列
t.join();//等待该线程完全执行结束在让其它线程执行(即让其他线程阻塞)
t.yield();//线程让步,让该线程从运行队列进入就绪队列

//后续加入锁后的方法
wait();//需要使用同步锁对象调用wait方法,调用后释放同步锁,从运行状态到阻塞状态
notify();//唤醒被wait的线程,若有多个线程被wait,则按照优先级
notifyAll();//唤醒所有被wait的线程

线程的生命周期?

线程的状态:

线程状态间的切换

新建状态new Thread() 不会被执行;通过start()方法此线程进入就绪状态;

线程的分类

一直在执行,在所有用户线程结束后自动结束(如GC垃圾回收就是)

设置一个线程为守护线程:t1.SetDaemon(true);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值