黑马训练营 ---------多线程

------- android培训java培训 ----------
一 什么是线程和进程
 1 进程就是一个对立运行的程序,例如qq 快播  网页.
       2 在进程中是可以包含多个线程的,线程就是一个程序内部的执行线索,就相当对QQ聊天的时候向对方发送信息不一定先要等对方发信息给我,聊天里面的接受和发送就是在两个在同一个进程里的线程。
二  Thread类来创建线程
 public class ThreadDemo2
 {
  public static void main(String args)
  {
   new TestThread().start();//调用TestThread()中的start函数(这个函数是从Thread中继承过来的,他会开启一个线程),这个是就是的start方法将会产生一个新的线程,这个时候线程就会去运行Thread类对象中的Run方法,根据面向对象的多态性,在该线程实际运行的就是Thread子类的run 方法。
   while(true){}
  }
 }
 class TestThread extends Thread
 {
 } 
 1 特点 一次只能够创建一个线程,
 
三 Runnable接口创建多线程
 
 public static void main(String args)
 {
  Thread t=new Thread(new RunnableDemo);//
  t.start();
 }
 class RunnableDemo
 {}
 
 2 优点 :a 多个相同的程序代码的线程去处理同一线程。
   b 可以避免java单继承的局限性。如有时这个类在继承其他类的同时,想要在拥有多线程二只有放弃以前的情况。
   c 有利于代码的健壮性。
四 Thread类和Runnable的区别
 1 在买票的例子里面,会发现继承Thread类的买票程序所创建的4个线程所买的票不是共同的100张票,而是每个线程都拥有100张票,出现这杨的原因是我们创建了4个的对象,反观继承了Runnable接口他只创建了一个对象,在这个对象的买票进程中在创建了4个线程,这4个线程是共同操纵那100张票,也就是线程调用的都是同一个对象的方法。
 
五 后台线程与联合线程
 1 后台线程 当一个程序的main的主线程结束了但由于其他线程还在运行导致他的main()不能够结束。但是如果我们在启动某个线程前先条用setDaemon(true),那么这个线程也就变成了后台线程,在程序中剩下后台线程时,程序也会结束。
 2 联合线程
  class Demo
{
 public static void main(String[] args)
 {
   Test t=new Test();
  Thread tt=new Thread(t);
 
  tt.start();//把tt线程合并到条用他的线程。 
  int i=0;
  while (true)
  {
   if(i==100)//在i!=100的之前,tt这个线程是和主线程交替执行的,但是当i==100的时候,由于这个时候把tt并如主线程所以主线程先会等tt线程执行完代码后在执行主线程的。
   { try
    {
     tt.join();
    }
     catch(Exception e){}
   }
   System.out.println(Thread.currentThread().getName()+"100"+i++);
  }
 }
}
class Test implements Runnable
{
 public void run()
 { int tickets =100;
  while(true)
  {
   System.out.println(Thread.currentThread().getName()+"0000");
  }
 }
}
六 同步代码块与同步函数
 1 什么是同步代码块;
 2 是么是同步函数;
 3 在同步代码块与同步函数之间进行同步。
七 线程安全问题
 1 Thread的函数
  sleep();interrupt().
 2 synchronized(obj)
 3 出现的原因是由于线程的代码
 5 几种常见的安全问题
  a 对于共享资源和锁旗标的对象都不能够定义在run方法中,当把这共享资源定义在run方法中时产生的安全问题和用Thread类的子类创建的多线程一样,也就是几个线程所操作的对象不是同一个资源, 当锁起标定义在run方法中时由于锁旗标的对象不是一个对象会出现对票的重复操作。
八 线程间的通信
 1 线程间的通信是不是可以看成是一种线程同步的扩展。
 2 怎么做到线程之间的通信。
 3 常用方法 wait() notify() notifyAll() intrrrupt()
九 线程的生命周期
 1 线程产生与消亡的过程:一个线程的产生是从条用start()开始的,这时的线程处于一个可以被调度的状态,调度器可以将CPU分给他,真正运行其中的代码。
 2 线程产生后的几种状态
  a 没有遇到任何阻塞,直接运行结束。
  b 调度器没有将cpu分配给他,这个线程又处于Runnable状态。
  c 在请求锁旗标,把锁旗标请求好以后会进入runnable状态开始运行。
  d 遇到了wite(会释放掉锁旗标吗),他会被放入线程池中,直到被notify或者interrupt后太再去等待锁旗标,等待进入Runnable状态继续执行。
   

<

  &nbsp;
</p>---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------详细请查看:http://edu.csdn.net

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值