zoukankan      html  css  js  c++  java
  • 多线程

    1 多线程的介绍

    进程:进程指正在运行的程序。

    线程:线程是进程中的一个执行单元,负责当前进程中程序的执行,一个进程中至少有一个线程。一个进程中是可以有多个线程的,这个应用程序也可以称之为多线程程序。

    总结一句话就是:一个程序运行后至少有一个进程,一个进程中可以包含多个线程

    什么是多线程呢?即就是一个程序中有多个线程在同时执行。

    关于主线程:

    public class Demo01 {
        //主线程
        //程序从上往下执行的过程
        //javac编译Demo01
        //jvm运行main方法,找操作系统os,开启线程
        //对于CPU来说就有了一条执行路径,运行方法main的这条路径有个名字
        //叫“main”即 主线程
        public static void main(String[] args) {
            method01();
            System.out.println(Math.abs(-9));
        }
        public static void method01(){
            for(int i=0;i<10000;i++){
                System.out.println(i);
            }
        }
    }

    创建线程的方式一    Thread类

     构造方法有:

    常用方法:

    public class Demo02 {
        //开线程的第一种方法
        //1.定义Thread子类,继承Thread,重写run()方法
        //2.在测试类中,创建Thread子类对象
        //3.用子类对象调用start()方法,只能调用一次
        public static void main(String[] args) {
            //创建线程对象
            ThreadDemo td=new ThreadDemo();
            //开启线程
            //start:1.让线程执行2.让jvm调用线程中的run方法
            td.start();
            for(int i=0;i<100;i++){
                System.out.println("main..."+i);
            }
        }
    }

    自定义线程类:

    public class ThreadDemo extends Thread {
        public ThreadDemo(){
            
        }
        public ThreadDemo(String name){
            super(name);
        }
        public void run(){
            System.out.println(getName());
            for(int i=0;i<100;i++){
                try {
                    sleep(1000);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                System.out.println("thread..."+i);
            }
        }
    }

     

     3.获取线程名称

     Thread.currentThread()获取当前线程对象

     Thread.currentThread().getName();获取当前线程对象的名称

    创建线程的方式二  实现Runnable接口

    l  Thread类构造方法

    public class MyRunnable implements Runnable {
    
        public void run() {
            for(int i=0;i<100;i++){
                System.out.println(Thread.currentThread().getName()+"..."+i);
            }
        }
        
    }
    public class Demo01 {
        //第二种创建线程的方式
        //1.创建实现类,实现Runnable接口,重写run方法
        //2.在测试类中创建实现类对象,创建线程对象
        //将实现类对象传入线程对象的构造方法
        //3.用线程对象开启线程
        //好处:高内聚(自己的事情自己干),低耦合
        public static void main(String[] args) {
            //创建线程任务对象
            MyRunnable mr=new MyRunnable();
            //创建线程对象
            Thread t1=new Thread(mr);
            //开启线程
            t1.start();
            Thread t2=new Thread(mr);
            t2.start();
        }
    }

    用一句话来创建线程并开启线程

    public class Demo02 {
        public static void main(String[] args) {
    /*        //多态定义一个runnable实现类对象
            //来描述线程对象
            Runnable r=new Runnable() {
                public void run() {
                    System.out.println("这是重写后的run方法");
                }
            };
            //创建线程
            Thread t=new Thread(r);
            t.start();*/
            //一句话创建线程并开启线程
            new Thread(new Runnable(){
                public void run() {
                    System.out.println("run方法");
                }
            }).start();
        }
    }
  • 相关阅读:
    docker从容器中怎么访问宿主机
    fail2ban CentOS7安装
    关于sql当中的isnull和ifnull的区别
    关于mybatis反向生成的时候,对于数据库当中的数据类型是text的处理。
    关于Java当中的MapUtils工具类的使用和注意事项。
    在大数据管理平台HDP的ambria的时候遇到python的安全认证的问题
    通过java代码实现调用excel当中的宏的操作。
    通过vba实现对word当中个的标签进行批量的替换
    通过vba实现对word当中的表格动态的插入行,同时对表中进行数据的填充。
    关于vba实现删除word文档中的指定表格。
  • 原文地址:https://www.cnblogs.com/zzq123/p/10224981.html
Copyright © 2011-2022 走看看