java多线程-基础

java多线程---基础

一, java多线程----线程与进程

  进程: 程序(任务)的执行过程,拥有资源(共享内存,共享资源)和线程(一个或者多个,至少一个)。  例如:打开任务管理器,qq,chrome,都属于进程。

  线程:  系统中最小的执行单元,同一进程中有多个线程,线程共享进程的资源。       例如:qq的聊天发送消息。

      单线程:程序中只有一个线程,实际上主方法就是一个主线程。

   多线程:程序中运行多个任务,   目的是更好的使用cpu资源。

二,java多线程----线程的实现

  简单一句话来说,继承Thead类或者实现Runnable这个接口,然后重写里面的run方法。

继承Thead类

 1 public class MyThead extends Thread{
 2     
 3     private String name;
 4     public MyThead(String name) {
 5         this.name = name;
 6     }
 7     @Override
 8     public void run() {
 9         for (int i = 0; i < 1000; i++) {
10             System.out.println(name+"------"+i);
11         }
12     }
13 }

实现Runnable接口

 1 public class MyRunnable  implements Runnable{
 2     
 3     private String name;
 4     public MyRunnable(String name) {
 5         this.name = name;
 6     }
 7     @Override
 8     public void run() {
 9         for (int i = 0; i < 1000; i++) {
10             System.out.println(name+"----"+i);
11         }
12         
13     }
14 
15 }

启动线程

 1 public class TheadDemo {
 2 
 3     public static void main(String[] args) {
 4         MyThead t1 = new MyThead("t1");
 5         MyThead t2 = new MyThead("t2");
 6         
 7         t1.start();
 8         t2.start();
 9         
10         MyRunnable r1 = new MyRunnable("r1");
11         MyRunnable r2 = new MyRunnable("r2");
12         
13         Thread t3 = new Thread(r1);
14         Thread t4 = new Thread(r2);
15         
16         t3.start();
17         t4.start();
18     }
19 }

三,java多线程----线程的状态

   创建状态:创建多线程对象。

   就绪状态: 调用start(),等待cpu调用。

   运行状态: 执行run()。

   阻塞状态:暂时停止执行,将资源交给其他线程使用。

   终止状态:线程结束。

四,java多线程----常用的方法(thead类里面)

  获取当前线程的对象      currentThread()

  得到线程名称               getName()

  判断线程是否运行         isAlive()

  线程的强行运行            join()      例如:俩个线程t1,t2,    当在t1执行的时候,t2调用join()方法,t1暂停不执行,t2执行,执行完成后,释放资源,t1接着执行。

  线程的休眠                 sleep()    例如:t1每执行一次,等待5秒      t1.sleep(5000)

  线程的礼让                 yield()     例如:俩个线程t1,t2,    当在t1执行的时候,t1调用yield()方法,t1暂停不执行,t2执行,执行完成后,释放资源,t1接着执行。