• 多线程


    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();
        }
    }
  • 相关阅读:
    sql server 2005的分页函数ROW_NUMBER
    Silverlight 皮肤(主题)动态切换
    Silverlight 地图导航
    WPF模板概述(数据模板)
    Silverlight MVVM Prism WCF RIA项目框架
    多线程通中的AutoResetEvent与ManualResetEvent
    Silverlight 图形报表 线形图 柱形图 饼图
    WPF 重要新概念读书笔记(转)
    Net基本概念和原理
    数据库辅助工具SqlDbx
  • 原文地址:https://www.cnblogs.com/zzq123/p/10224981.html
Copyright © 2020-2023  润新知