由浅入深了解多线程

(一)线程和进程的关系。

一个线程则是进程中的执行流程,一个进程可以包括多个线程。

(二)实现线程的两种方式。

a、java.lang.Thread:

public class ThreadTest extends Thread

{   }

public void run(){   /***真正实现功能的代码***/}

b、java.lang.Runnable(若需要继承其他类,则需要使用Runnable接口)

public class Thread extends Object implements Runnable



(三)、线程的运行状态。

线程共有新建、运行、阻塞、等待、计时等待、终止六种状态。

1、new操作符创建新线程(新建)

2、start(可运行)

3、线程获得对象的内置锁,而锁被其他线程拥有(阻塞)

4、当线程等待其他线程通知调度表可以运行时(等待)

5、对于一些含有时间参数的方法,sleep( )方法,使线程处于计时等待状态。

6、run( )方法运行完毕或出现异常时,线程处于终止状态。(Tips)

(四)线程的生命周期

如果一个线程在运行状态下发出输入/输出请求,该线程将进入阻塞状态,在其等待输入/输出结束时线程进入就绪状态,对于阻塞 的线程来说,即使系统资源空闲,线程依然不能回到运行状态。

(五)操作线程的方法

1、线程的休眠:sleep()方法需要一个参数用于指定该线程休眠的时间,同时由于该方法执行有可能抛出Interrupted Exception异常,sleep()方法的调用放在try...catch中

2、线程的加入:join()方法,当某个线程使用join方法加入到另一个线程时,另一个线程会等待该线程执行完毕再继续执行。

3、线程的中断:不建议使用stop(),现在提倡run( )方法使用无限循环的形式,然后使用布尔型标记控制循环的停止。

(六)线程安全问题

1、如何解决资源共享问题:基本上所有解决多线程资源冲突问题都会采用给定时间只允许一个线程访问共享资源,这就需要给共享资源上一道锁。

synchronized(Object)

{    }


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值