线程有多个操作状态:
线程的状态:准备好了一个多线程的对象
就绪状态:调用了start方法,等待CPU调度运行状态:执行run()方法阻塞状态:暂时停止执行,可能将资源交给其他线程使用终止状态:线程销毁一个进程可以包括多个线程。
在Java中,线程的实现有两种:
1、继承Thread类2、实现Runnable接口Thread类:继承Thread类必须重写run()方法。使用Thread类实现进程如下:
定义线程:
public class MyThread extends Thread { private String name; public MyThread(String name) { this.name=name; } public void run() { for (int i = 0; i < 1000; i++) { System.out.println(name+":"+i); } super.run(); }}
用MyThread的start方法启动线程。
public class ThreadDemo01 { public static void main(String[] args) { MyThread t1=new MyThread("A"); MyThread t2=new MyThread("B");// t1.run();// t2.run(); //线程通过start方法启动 t1.start(); t2.start(); }}
使用Runnable接口实现线程:
接口的run方法在线程启动后自动执行。
public class MyRunable implements Runnable{ private String name; public MyRunable(String name) { this.name=name; } public void run() { for (int i = 0; i < 1000; i++) { System.out.println(name+":"+i); } }}
启动线程:因为Runnable并没有start方法,只能实例化Thread类来启动线程
public class ThreadDemo01 { public static void main(String[] args) { MyRunable r1=new MyRunable("A"); MyRunable r2=new MyRunable("B"); Thread t1=new Thread(r1); Thread t2=new Thread(r2); t1.start(); t2.start(); }}
线程的常用方法:
1、取得线程名称:getName()2、取得当前线程对象:currentThread()3、判断线程是否启动:isAlive()4、线程的强行运行:join()5、线程的休眠:sleep()6、线程的礼让:yield()class RunnableDemo implements Runnable{ private String name; public RunnableDemo(String name) { this.name=name; } public void run() { for (int i = 0; i <20; i++) {// try {// Thread.sleep(1000);// } catch (InterruptedException e) {// e.printStackTrace();// } System.out.println(name+":"+i); if (i==10) { System.out.println("礼让另一个线程****************"); Thread.yield(); } // System.out.println("当前线程对象:"+Thread.currentThread().getName()); } }}public class ThreadDemo02 { public static void main(String[] args) { RunnableDemo r=new RunnableDemo("A"); RunnableDemo r2=new RunnableDemo("B"); Thread t=new Thread(r); Thread t2=new Thread(r2);// System.out.println(t.isAlive()); t.start(); t2.start();// System.out.println(t.isAlive()); }}