线程Thread与实现多线程

线程:

1、创建线程: 继承java.lang.Thread类,并重写run()方法 // 继承Thread类后,可以使用this访问当前线程

                        实现Runnable接口,并重写run()方法 //实现接口后,必须通通过Thread.currentThread()方法访问 当前线程。

2、启动线程:Thread thread = new Thread;

                        thread.start();

3、线程的生命周期:新建 就绪 阻塞 运行 死亡

4、线程状态:

                新建状态:用new关键字创建一个线程对象。

                就绪状态:当调用了start(),系统为该线程分配除了cpu之外的所有的资源。

                运行状态:处于就绪状态的线程,获得了cpu的使用资格,才开始运行。

                阻塞状态:一个正在运行的线程由于某种原因丧失了cpu的使用权,不能继续运行,就由运行状态进入阻塞 状态。

                死亡状态:线程的run()方法执行完毕,自然死亡。或程序出现问题非正常死亡。

5、线程休眠: Thread.sleep(1000); //毫秒

6、join线程:Thread提供了让一个线程等待另一个线程完成的方法:join()。当某个程序在执行过程中调用了其他线程的join()方法,则当前线程被阻塞,知道被join()方法加入的线程完成为止。

7、守护线程(Daemon Thread):主线程死亡,无论守护线程是否执行完毕,都会死亡。

8、线程同步:当多个线程同时对同一个实例的同一个实例变量进行操作时,会引起线程同步问题

9、同步代码块:synchronized(this){}

10、同步锁:ReentrantLock reentrantLock = new ReentranctLock();

                        reentrantLock.lock();

                        try{ } catch( ){ }finally{

                        reentrantLock.unlock();

                        }

Java多线程实现的方式有四种:
1.继承Thread类,重写run方法
2.实现Runnable接口,重写run方法,实现Runnable接口的实现类的实例对象作为Thread构造函数的target
3.通过Callable和FutureTask创建线程
4.通过线程池创建线程

前面两种可以归结为一类:无返回值,原因很简单,通过重写run方法,run方式的返回值是void,所以没有办法返回结果;


后面两种可以归结成一类:有返回值,通过Callable接口,就要实现call方法,这个方法的返回值是Object,所以返回的结果可以放在Object对象中;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

单眼皮女孩i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值