Java线程Thread

来源:互联网 发布:oracle数据库分页查询 编辑:程序博客网 时间:2024/06/08 09:02

1 什么是线程

1.1线程就是计算机执行的一个小任务,一个进程可以包含多个线程。
1.2线程的并行和并发:
并行是一同执行,要求计算机必须要有多个cpu
并发是按先后顺序执行,只不过计算机运行的速度非常快就可以理解为是同时执行的

2证明JVM是多线程的

JVM是多线程的:它有垃圾处理机制和程序的主线程

public class JVMManyThread {    public static void main(String[] args) {        for (int i = 0; i < 500000; i++) {            new Demo();        }        for (int i = 0; i < 500000; i++) {            System.out.println("1111111111111111111111111111111111111");        }    }}class Demo{    @Override    public void finalize(){        System.out.println("-------------------------------------------------------------------------------------------------------------------------------------------------------");    }}

3创建线程的两种方法

3.1继承Thread类调用start()方法

public class ExtendsThread {    public static void main(String[] args) {            Demo demo = new Demo();//3生成对象            demo.start();//4调用start()方法        for (int i = 0; i < 1000; i++) {            System.out.println("+++++++++++++++++++++++++");        }    }}class Demo extends Thread{//1创建Demo类继承Thread类    @Override    public void run() {//2重写run()方法        for (int i = 0; i < 1000; i++) {            System.out.println("-----------------------------");        }    }}

3.2实现Runnable接口,创建对象传给Thread类的构造方法,之后返回对象调用start()方法

public class ImplementsRunable {    public static void main(String[] args) {        MyTread myTread = new MyTread();        Thread thread = new Thread(myTread);        thread.start();        for (int i = 0; i < 1000; i++) {            System.out.println("--------------------------------------");        }    }}class MyTread implements Runnable{    @Override    public void run() {        for (int i = 0; i < 1000; i++) {            System.out.println("++++++++++++++++++++++++++++++++++++++++");        }    }}

4通过匿名内部类来实现线程的两种方法

代码如下:

public class Demo04_Thread {    public static void main(String[] args) {        // 通过继承thread        new Thread() {                  //1创建Thread对象            @Override            public void run() {         //2重写run()方法                for (int i = 0; i < 1000; i++) {                    System.out.println("+++++++++++++++++++++++++++++++");                }            }        }.start();                      //3调用start()执行        // 通过实现Runnable接口        new Thread(new Runnable() {             //1创建Thread对象传入Runnable对象            public void run() {                 //2写run()方法                for (int i = 0; i < 1000; i++) {                    System.out.println("------------------------------");                }            };        }).start();             //3调用start()执行    }}

5给线程取名字

public class Demo01_Name {    public static void main(String[] args) {        new Thread() {            @Override            public void run() {                this.setName("11");//设置名字                System.out.println(this.getName());//打印读取名字            }        }.start();        Thread thread = new Thread(new Runnable() {            public void run() {                System.out.println("-------------------");            }        });        thread.setName("22");        System.out.println(thread.getName());        thread.start();    }}

获取当前线程对象