zoukankan      html  css  js  c++  java
  • JAVA之线程

    一、创建线程的两种方式:

    1、写一个类继承Thread类,并重写run方法:

    public class ThreadDemo {
        public static void main(String[] args) {
            Boo boo = new Boo();
            boo.start(); 
        }
    }
    class Boo extends Thread{
        @Override
        public void run() {
            for (int i = 0; i < 10; i++) {
                System.out.println(i);
            }
        }
    }

    2、写一个类实现一个Runnable接口,并重写run方法:

    public class ThreadDemo {
        public static void main(String[] args) {
            Coo coo = new Coo();
            Thread tCoo = new Thread(coo);
            tCoo.start(); //接口启动需要先创建Thread对象,将接口对象传入Thread()后,再使用Thread对象启动
            new Thread(new Coo()).start(); //一行写Thread对象并启动的方式
        }
    class Coo implements Runnable{
        @Override
        public void run() {
            for (int i = 10; i < 20; i++) {
                System.out.println(i);
            }
        }
    }

    二、启动线程的方式:

    1、启动继承Thread类的类的对象:

    public class ThreadDemo {
        public static void main(String[] args) {
            Boo boo = new Boo();
    //        boo.run();//不要调用.run(),调用的是方法,跟线程一点关系都没有
            boo.start(); //用.start()这个方法,线程启动什么它就执行什么,它会自己执行run方法
        }
    }
    class Boo extends Thread{
        @Override
        public void run() {
            for (int i = 0; i < 10; i++) {
                System.out.println(i);
            }
        }
    }    

    2、启动实现Runnable接口的类的对象:

    public class ThreadDemo {
        public static void main(String[] args) {
        Coo coo = new Coo();
        Thread tCoo = new Thread(coo);
        tCoo.start();  //方式1

    new Thread(new Coo()).start(); //方式2 } } class Coo implements Runnable{ @Override public void run() { for (int i = 10; i < 20; i++) { System.out.println(i); } } }

    三、线程个数:

    public class ThreadDemo {
        public static void main(String[] args) { //线程1
            Boo boo = new Boo();
            boo.start();  //线程2
            Coo coo = new Coo();
            Thread tCoo = new Thread(coo);
            tCoo.start(); //线程3
            new Thread(new Coo()).start(); //线程4
            System.out.println("AAAA"); //线程的执行是无序的,是由CPU决定的,使用哪个CPU,就执行哪个线程
        } //main()方法本身是一个线程,所以上面一共有4个线程:
        // (1)boo.start() (2)tCoo.start() (3)new Thread(new Coo()).start() (4)main()
    }
    
    class Boo extends Thread{
        @Override
        public void run() {
            for (int i = 0; i < 10; i++) {
                System.out.println(i);
            }
        }
    }
    
    class Coo implements Runnable{
        @Override
        public void run() {
            for (int i = 10; i < 20; i++) {
                System.out.println(i);
            }
        }
    }
    每天进步一点点,快乐生活多一点。
  • 相关阅读:
    图片上传前预览、压缩、转blob、转formData等操作
    Vue背景图打包之后访问路径错误
    图片上传前预览的功能
    总结div里面水平垂直居中的实现方法
    IE浏览器报Promise未定义的错误、解决vuex requires a Promise polyfill in this browser问题
    普通项目转换成maven项目
    HTTP 错误 404.0
    电商项目系列文档(四):售后的设计(退换货)
    Sqlserver数据库还原.bak文件失败的两个问题
    数据库字段顺序的【坑】
  • 原文地址:https://www.cnblogs.com/yiruliu/p/10907537.html
Copyright © 2011-2022 走看看