黑马程序员--线程

来源:互联网 发布:家有大猫 知乎 编辑:程序博客网 时间:2024/05/21 10:57

<a href="http://www.itheima.com" target="blank">android培训</a>
 

一、进程与线程
       进程:正在执行的程序。每一个进程执行都有一个执行顺序。该顺序是一个执行路径,或者叫一个控制单元。
       线程:把进程中的功能分成各个部分,每个部分有一个线程控制。它是进程中的一个独立的控制单元。

       多线程:在一个进程中有多个线程执行的方式,就叫做多线程。如在java虚拟机启动的时候会有一个java.exe的执行程序,也就是一个进程。该进程中至少有一个线程负责java程序的执行。而且这个线程运行的代码存在于main方法中。该线程称之为主线程。JVM启动除了执行一个主线程,还有负责垃圾回收机制的线程。
      
      多线程的意义:多线程的出现能让程序产生同时运行效果。可以提高程序执行效率。

      当线程运行出现安全问题,,Java对于安全问题提供专业的解决方式,就是同步代码块或者同步函数。

      要用到同步的前提应该是:1、必须要有两个或者两个以上的线程。

                                                 2、必须是多线程使用同一个锁。

                                                 3、必须保证同步中只能有一个线程在运行。

二、创建线程的方式
两种方法:继承Thread类和实现Runnable接口(建议使用,因为java是单继承,多实现,一旦继承,Thread类后就不能继承其他类了)。

 

   创建线程的第一种方式:
  1、定义类,继承Thread
  2、重写run()方法
  3、创建Thread类的子类对象
  4、用子类对象,调用Thread类的方法start()方法,开启线程

例子1
class DemoThread extends thread
{

publiv void run()
for(x=0,x<40,x++);
{

System.out.println("yao"+x);

}

}


class DemoThread2


{
public static void main(String[] args)

         DemoThread p=new DemoThread();
         p.run();

{
public void run
for(x=0,x<40,x++);
{
System.out.println("ming"+x);
}


}

}


例子2

   线程的第二种方式:
  1、定义类实现Runnable接口
  2、覆盖Runable接口中的run方法
  3、通过Thread类建立线程对象
  4、将Runnable 接口的子类对象作为实际参数传递给Thread类的构造函

 5、调用Thread类的start方法开启线程并调用Runnable接口子类的run方法


例2

class Ticket implements Runnable
{
Object obj=new Object();
  private int tick=100;
  public void run()
 {
  while(true)
  {
  synchronized(obj)   //下面的语句出现安全问题,就用到同步代码块
{
  if(tick>0)
{
  try{Thread.sleep(10);}catch(Exception e){}  //出现异常,用catch处理掉
  System.out.println(Thread.currentThread().getName()+".."+tick--);
 
  }
 
}
  }

  

  }

}


class RunnableDemo

{
public static void main(String[] args)
 {
                 Ticket t=new Ticket();
                 Thread t1=new Thread(t);
                 Thread t2=new Thread(t);
     Thread t3=new Thread(t);
     Thread t4=new Thread(t);
     t1.start();
      t2.start();
       t3.start();
        t4.start();

}

}

 

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------

 

 

0 0
原创粉丝点击