- 1.线程:
- 线程时轻量级的进程
- 线程没有独立的地址空间
- 线程是有进程创建的(寄生在进程)
- 一个进程可以拥有多个线程
- 2.线程的状态:
- 3.java中一个类要当作线程来使用有两种方法
- 1.继承Thread类,并重写run函数
- 2.实现Runnable接口,并重写run函数
- 4.例子
/**1.使用方法一和方法二编写一个程序,该程序每隔一秒在控制台输出一个“HelloWorld”,输出十个就退出*/public class Test { public static void main(String[] args) { Cat cat = new Cat(); cat.start();//方法一启动线程,此处没有调用run函数,也会运行此函数 Dog dog = new Dog(); //创建一个线程对象,方法二启动线程 Thread t = new Thread(dog); t.start(); //一个线程只能启动一次,否则会报错 //t.start();报错 //创建多个线程对象再运行就不会报错,但会涉及线程安全的问题 Thread t1 = new Thread(dog); Thread t2 = new Thread(dog); t1.start(); t2.start(); }}class Cat extends Thread{ int time = 0; //重写run函数 public void run(){ while(true){ // try { //线程休眠1000毫秒,进入到阻塞状态,并释放所占用的资源 Thread.sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } //计数器 time++; System.out.println("方法一:HelloWorld "+time); //输出十次就退出 if(time == 10){ break; } } }}class Dog implements Runnable{ int time = 0; @Override public void run() { while(true){ // try { //线程休眠1000毫秒,进入到阻塞状态,并释放所占用的资源 Thread.sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } //计数器 time++; System.out.println("方法二:HelloWorld "+time); //输出十次就退出 if(time == 10){ break; } } }}