使用new创建线程后,可以通过Thread类的方法来设置线程的各种属性
线程进入阻塞状态:调用sleep方法,等待同步锁,调用了wait方法
终止线程的方法:执行完正常退出、使用stop方法强制退出、使用interrupt方法强制中断退出
Java实现方法,1:通过继承Thread类实现多线程,2:通过实现Runnable接口,再使用Thread实现多线程
package pkg1; public class ThreadDemo { public static void main(String[] args) { System.out.println("———————————————demo 1—————————————————"); MyThread1 t1 = new MyThread1(); t1.setName("t1");// 设置线程名称 MyThread1 t2 = new MyThread1(); t2.setName("t2");// 设置线程名称 t1.start();// 线程启动 t2.start();// 线程启动 try { t1.join();// 主线程等待新线程完成再继续往下执行 t2.join(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println("demo 1 结束"); System.out.println("———————————————demo 2—————————————————"); MyRunnable1 r1=new MyRunnable1(); MyRunnable1 r2=new MyRunnable1(); Thread t3=new Thread(r1,"r1"); Thread t4=new Thread(r2,"r2"); t3.start(); t4.start(); try { t3.join(); } catch (InterruptedException e) { e.printStackTrace(); } try { t4.join(); } catch (InterruptedException e) { e.printStackTrace(); } } } //继承Thread类,直接启动线程 class MyThread1 extends Thread { public MyThread1() {}//无参构造函数 public MyThread1(String name) {//有参构造函数,参数为:线程名称 super(name); } @Override public void run() { for (int i = 0; i < 5; i++) { System.out.println(this.getName() + " " + i); } super.run(); } } //类实现Runnable接口,再用Thread线程启动执行 //一般多使用此方式实现多线程,方便实现资源共享(多线程使用同一对象,例如:多窗口卖同一车票) class MyRunnable1 implements Runnable{ @Override public void run() { for (int i = 0; i < 5; i++) { System.out.println(Thread.currentThread().getName() + " " + i); } } }