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

    一个java程序实际上是一个JVM进程,JVM进程用一个主线程来执行main()方法,在main()方法内部,我们又可以启动多个线程。此外,JVM还有负责垃圾回收的其他工作线程等。

    第一种:继承Thread类

    public class MyThread{
        public static void main(String[] args) {
            final Thread t = new testThread();
            t.start(); // 启动新线程
            System.out.println("start main thread!");
    
            
        }
    }
    
    class testThread extends Thread {
        @Override
        public void run() {
            System.out.println("start new thread!");
        }
    }

    运行测试

    package pack_10;
    
    public class testThread {
        public static void main(String[] args) {
            System.out.println("main start...");
            Thread t = new Thread() {
                public void run() {
                    System.out.println("thread run...");
                    try {
                        Thread.sleep(10);
                    } catch (InterruptedException e) {}
                    System.out.println("thread end.");
                }
            };
            t.start();
            try {
                Thread.sleep(20);
            } catch (InterruptedException e) {}
            System.out.println("main end...");
        }
    }

    运行结果

    注意:调用run()方法和调用start()是不一样的!

    public class MyThread{
        public static void main(String[] args) {
            final Thread t = new testThread();
            t.start(); // 启动新线程,start为同时执行
            for (int i = 0; i < 10; i++) {
                System.out.println("start main thread!");
            }
        }
    }
    
    class testThread extends Thread {
        @Override
        public void run() {
             for (int i = 0; i < 10; i++) {
                System.out.println("start run thread!");
            }
        }
    }

    输出结果:

    可以看到上述是交替执行的。因此,调用普通方法例如调用run()方法是普通调用,会先执行run方法,依然是主线程执行,而调用start方法则会开起子线程,从此主线程和子线程会并行交替执行。

    第二种方法:通过runnable接口实现多线程

    package com.lipu.demo01;
    
    //创建线程方式2:现实重写runnable接口,重写run方法,执行线程需要丢入runnable接口实现类
    public class TestThread03 implements Runnable {
        @Override
        public void run() {
            for (int i = 0; i < 200; i++) {
                System.out.println("我在看代码。。。"+i);
    
            }
        }
        public static void main(String[] args) {
            //创建runnable接口的实现类对象
            TestThread03 testThread03=new TestThread03();
            //创建线程对象,通过线程对象来开启我们的线程,代理 简单理解通过Thread实现runnable接口
    //        Thread thread=new Thread(testThread03);
    //        thread.start();
            new Thread(testThread03).start();
            for (int i = 0; i < 200; i++) {
                System.out.println("我在学习多线程。。。"+i);
    
            }
        }
    
    }
  • 相关阅读:
    js窗口拖动 模版
    js中准确判断数据类型的方法
    ArcGis Python脚本——批量对影像、要素类定义投影
    ArcGis 属性表.dbf文件使用Excel打开中文乱码的解决方法
    解析ArcGis拓扑——根据拓扑错误记录提取shp文件、导出Excel表格
    解析ArcGis拓扑——检查的流程,以面重叠检查为例
    ArcGis Classic COM Add-Ins插件开发的一般流程 C#
    解析ArcGis的标注(三)——标注的放置 与 转注记修改
    解析ArcGis的标注(二)——认识ArcGis标注标签
    解析ArcGis的标注(一)——先看看分数式、假分数式标注是怎样实现的
  • 原文地址:https://www.cnblogs.com/lipu12281/p/12187342.html
Copyright © 2011-2022 走看看