Java_多线程基础

很惭愧,一直以来,都是开发的单进程或者单线程程序,我所了解的多线程也基本都是书本上的知识而已。现在看到《Java特种兵》的并发编程,需要了解多线程基础,因此将我所理解的多线程记下来,欢迎大家一起讨论,共同进步!!!


1、线程的创建

Java中创建线程是通过 java.lang.Thread类。启动线程可以通过Thread.start()方法,调用native方法实现创建真正的线程。线程执行的内容是Thread.run()方法内部的代码,如果不先执行Thread.start(),则只是在主线程中执行了一个普通的run()方法,没有创建新的线程来执行。

有两个常用途径可以创建我们自己的线程:

(1) 实现Runnable接口,需要在Runnable实现类中实现自己的run()方法;将Runnable类型的任务作为创建 Thread对象时构造方法的参数,这个参数会被设置到Thread的一个"target"属性上,Thread类默认的run()方法会调用这个target的run()方法。因此,Runnable实例可以理解为一个线程要执行的任务。

(2) 继承Thread类,在子类的run()方法中实现自己的业务逻辑。

执行main()方法的线程是主线程,自定义的线程都是子线程。


2、Thread.join()方法:

当前线程执行子线程的Thread.join(),当前线程会一直wait(),直到子线程的isAlive()返回false。因此,直到子线程执行完,才会执行Thread.join()之后的代码。


3、中断子线程

(1) Thread.stop() ,使得子线程抛出java.lang.ThreadDeath的错误,如果抛出异常时执行的代码段有try...catch,则会进入catch块;

但是这个Thread.stop()方法被Deprecated了,应该是对程序执行的顺序控制有弊,不建议使用了。

(2) 利用volatile类型的标识变量,需要程序轮询该变量的值。缺点是,如果程序正在阻塞,则达不到想要的效果了,因为代码没有继续执行下去;

(3) 利用Thread.interrupt(), 当子线程处于阻塞状态时,会重置中断状态(根据阻塞原因不同,所置状态可能不同);如果程序未阻塞,则仅仅是设置了线程的中断状态,正常代码还会继续执行






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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值