Java线程

线程依赖于进程而存在的,先了解进程才能指定线程,知道线程才能理解多线程。
进程是正在运行的程序,是系统进行资源分配和调用的独立单位,每一个进程都有自己的内存空间和系统资源。
线程是程序的执行单元,程序使用CPU的基本单位,一个进程可以执行多个线程。
单线程程序只有一条执行路径。
多线程可以执行多条执行路径。
多线程存在的意义是:抢占CPU使用资源和执行权。
Java不能直接调用系统的创建进程的功能,如果要实现多线程,只能调用C/C++写好的类供我们使用。

Java提供了以下两种方法实现多线程:

  1. 继承Thread类
    步骤:
    1.定义一个类去继承与Thread
    2.在定义类重写run()方法
    因为run()才是线程运行的核心方法。
    不是类中的所有代码都需要被线程执行。
    Thread类中的run()用来包含那些线程执行的代码。
    3.创建对象
    4.启动线程

用代码来举例:

public class MyThreadDemo{
   public static void main(String[] args){
		MyThread myThread = new MyThread(); //创建线程对象
		myThread.setName("线程1"); //给线程set入名字
		myThread.start(); //开启线程
		
		MyThread myThread2 = new MyThread();
		myThread2.setName("线程2"); 
		myThread2.start();

}
}


//创建一个类,继承Thread
public class MyThread extends Thread{

public void run(){
   for (int i =0 ; i < 10;i++){
			Sysotem.out.println(Thread.currentThread().getName()+i);	
//Thread.currentThread().getName()  是获得当前线程的名称
    	}	
	}
}
  1. 实现Runnable接口
    A.自定义类MyRunnable实现Runnable接口
    B.重写run()方法
    C.创建MyRunnable类的对象
    D.创建Thread类的对象,并把步骤C的对象作为构造参数传递

    public class MyRunnableDemo {

     	public static void main(String[] args) {
             MyRunnable my = new MyRunnable(); //新建线程对象
             
             Thread t1 = new Thread(my, "床前明月光");  //第一个参数是 线程名,第二个是线程的名字
             t1.start();
             Thread t2 = new Thread(my, 疑似地上霜");
             t2.start();
     	}
     
     }
     
     
     public class MyRunnable implements Runnable{
     
     	@Override
     	public void run() {
     	
     		for (int i = 0; i < 20; i++) {
     			System.out.println(Thread.currentThread().getName()+i); //获得当前线程的名字
     			try {
     				Thread.sleep(1000);   //暂停1秒
     			} catch (InterruptedException e) {
     		
     				e.printStackTrace();
     			}
     		
     		}
     	}
     }
    

  1. 匿名内部类的形式实现线程
  2.      // 继承thread类实现多线程
      new Thread() {
          public void run() {
              for (int x = 0; x < 100; x++) {
                  System.out.println(Thread.currentThread().getName() + "--"
                          + x);
              }
         }
      }.start();
      ;
    
      // 实现runnable借口,创建多线程并启动
      new Thread(new Runnable() {
          @Override
          public void run() {
              for (int x = 0; x < 100; x++) {
                  System.out.println(Thread.currentThread().getName() + "--"
                          + x);
              }
          }
      }) {
      }.start();
    

//这里创建一个线程的暂停的栗子

      public class ThreadSleepDemo{
          public static void main(String[] args){
			ThreadSleep sleep = new ThreadSleep();
			sleep.setName("VIP线程");
			sleep.start();
		}
	}


  //创建一个类,继承Thread
    public class ThreadSleep extends Thread{
               public void run{
                        for(;;){
            			System.out.println(getName()+new Date()); //打印 获得线程的名字和显示时间
            		}
            		Thread.sleep(2000);  //暂停的方法,2000是毫秒值,等于2秒钟
            	}	 
            }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值