Java-多线程(1)

并发和并行概念

并发:多个cpu实例或者多台机器同时执行一段处理逻辑,是真正的同时

并行:在同一个时间段内,两个或多个程序执行(实际上并不是同时执行,只是通过CPU调度,让用户看起来是同时执行)

多线程:一个进程运行时产生了不止一个线程

一、多线程的实现:

1.继承Thread类本身

2.实现Runnable接口

3.通过 Callable 和 Future 创建线程。

1.Thread类

public class TestThread extends Thread{
    private String name = null;
    public void TestThread(String name){
        this.name=name;
    }

    public void run(){
        try{
            for (int i=0 ; i<100 ; i++){
                Thread.sleep(1000);
                System.out.println(name+""+i);
            }
        }catch (Exception  e){
            e.printStackTrace();
        }
    }
}
//调用   Thread myThread = new Thread();
//       ((TestThread) myThread).TestThread("千古");
//       myThread.start();

二、Runnable类

public class TestThread1 implements Runnable{

    private String name = null;
    public TestThread1(String name){
        this.name = name;
    }
    
    @Override
    public void run(){
        try{
            for (int i=0;i<100;i++) {
                Thread.sleep(1000);
                System.out.println(name+" "+i);
            }
        }catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

//调用   Thread myThread = new Thread(new TestThread1("千古"));
//       myThread.start();

二、线程的生命周期

线程的状态:新建、就绪、运行、死亡、阻塞、等待、休眠

1、通过new关键字创建后,进入到新生状态 
2、调用start后进入就绪状态 
3、CPU调度到本线程后,本线程开始执行。进入到运行状态 
4、运行中遇到join,yield,sleep造成阻塞,进入阻塞状态。阻塞完成后,又回到就绪状态 
5、线程正常执行完,或者遇到异常终止后,进入死亡状态
 

// 开始线程  
public void start( );  
public void run( );  
 
// 挂起和唤醒线程  
public void resume( );     // 不建议使用  
public void suspend( );    // 不建议使用  
public static void sleep(long millis);  
public static void sleep(long millis, int nanos);  
public final native void wait() throws InterruptedException;
public final native void notify();
public final native void notifyAll();
 
// 终止线程  
public void stop( );       // 不建议使用  
public void interrupt( );  
 
// 得到线程状态  
public boolean isAlive( );  
public boolean isInterrupted( );  
public static boolean interrupted( );  
 
// join方法  
public void join( ) throws InterruptedException;

猜你喜欢

转载自blog.csdn.net/qq_37988830/article/details/87919991