线程

1、创建线程:

a、通过继承Thread类,重写run方法。
      Thread类实现了Runnable接口。

b、通过实现Runnable接口
      编写好一个实现了Runnable的类以后,通过
      Thread thread=new Thread(MyRunnable,线程名字)。

2、线程的睡眠
   sleep():参数指的是毫秒值。
3、线程的礼让
   yield():暂停当前正在执行的线程对象,并执行其他线程。
   sleep和yield的区别:
   sleep指的是让当前线程进入指定时间内的休眠状态,休眠完成后进入就绪状态,yield的意思是当前线程让出资源,立马进入就绪状态。
4、线程的合并
   join()方法:使其他线程等待当前线程停止。
   InterruptedException异常:出现的地方--sleep/join/wait/
5、线程的生命周期:
 1)、新建  new
 2)、就绪  线程进入可执行序列,start方法,阻塞状态的线程不再阻塞,进入就绪状态。
 3)、运行 
 4)、阻塞  Thread.sleep/Thread.yield()/Obj.wait()。
 5)、死亡 
6、线程的优先级。
   线程的优先级:1-10.  最大10,最小1,默认5
   线程的优先级在start()方法之前调用。
   setPriority(int) 设置优先级。
   线程的优先级的执行顺序是一种概率事件,优先级高的线程获取到CUP资源的可能性大于优先级低的线程。Java线程中的优先级还跟宿主主机有很大的关系,不建议大家将程序构建的正确性依赖线程的优先级。

7、如何终止一个线程。
   a、run方法执行完毕。
   b、通过stop方法终止,不过不建议使用,产生问题太多。
   c、产生异常或错误
   d、编写一个标志,通过标志的值来结束进程。
   interrupt()方法,不是用来终止正在运行的线程的,它的作用是:给当前线程设置一个线程终端的标志,通过调用interrupted()来判断线程状态,最后结束线程。
   当该线程设置了interrupt()时,线程受到阻塞,抛出InterruptedException异常。
   总结:要想中断一个一直运行的线程,请使用标志的方法退出线程。

8、多线程访问临界资源时数据安全问题
   多个线程间共享的数据称为临界资源(Critical Resource),
   由于是线程调度器负责线程的调度,
   程序员无法精确控制多线程的交替顺序。
   因此,多线程对临界资源的访问有时会导致数据的不一致行。
 9、synchronized关键字

   a、 每个对象都对应于一个可称为“互斥锁”的标记,这个标记用来保证在任一时刻,只能有一个线程访问该对象。
          b、 Java对象默认是可以被多个线程共用的,只是在需要时才启动“互斥锁”机制,成为专用对象。
          c、关键字synchronized用来与对象的互斥锁联系
          d、当某个对象用synchronized修饰时,表明该对象已启动“互斥锁”机制,
   在任一时刻只能由一个线程访问,即使该线程出现堵塞,该对象的被锁定状态也不会解除,其他线程任不能访问该对   象。
10、死锁

   a、互斥条件:一个资源每次只能被一个进程使用。
   b、请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
   c、不可剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。
   d、循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。
 
   如何避免死锁:
   a、 等待某个资源时,使用超时机制。
   b、采用消息通信的通信机制,而不是共享内存的通信机制。
 11、ThreadLocal
   a、每个线程都有自己的局部变量
    每个线程都有一个独立于其他线程的上下文来保存这个变量,一个线程的本地变量对其他线程是不可见的(   有前提,后面解释)
   b、独立于变量的初始化副本
    ThreadLocal可以给一个初始值,而每个线程都会获得这个初始化值的一个副本,这样才能保证不同的线程   都有一份拷贝。
   c、状态与某一个线程相关联
    ThreadLocal 不是用于解决共享变量的问题的,不是为了协调线程同步而存在,而是为了方便每个线程处   理自己的状态而引入的一个机制。
  

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值