• 线程模型


    线程模型

    什么是程序

      安装在磁盘上的一段指令集合,它是静态的概念

    什么是进程

       它是运行中的程序,是动态的概念,每个进程有独立的 资源空间

    什么是线程

      轻量级进程,是程序执行流的最小单元,是程序中一个单一的顺序.线程是进程中 的一个实体,是被系统独立调度和分派的基本单位

    什么是多线程

      则指的是在单个程序中可以同时运行多个不同的 线程执行不同的任务

    多线程的特点

      一个进程可以包含一个或多个线程

      一个程序实现多个代码同时交替运行就需要产生多个线程

      线程本身不拥有系统资源,与同属一个进程的其他线程共享所在进程所拥有的资源

      同一进程中的多个线程之间可以并发执行.cpu会随机抽出时间,让我们的程序一会做这件事情,一会做另一件事情

    多线程的目的

      最大限度的利用cpu资源

    //THread和Runnable接口的区别

    Runnable接口的好处
    //1.避免单继承的局限
    //2.适合资源的共享

    通过继承Thread类创建线程

    package com.iotek.day2;
    
    public class ThreadDemo {
      public static void main(String[] args) {
        HelloThread h1=new HelloThread("A");
        //设置线程名称
        h1.setName("线程1");
        h1.start();
        
        HelloThread h2=new HelloThread("B");
        //设置线程名称
        h2.setName("线程2");
        h2.start();
        
        
        
    }
    }
    
    class  HelloThread  extends Thread{
        
         public HelloThread(String name) {
            super(name);
        }
        
        
        @Override
        public void run() {
            for(int i=0;i<5;i++) {
                System.out.println(this.getName()+"  "+i);
            }
        }
        
    }

    通过实现Runable接口创建线程

      创建实现Runable接口的类的实例

      创建一个Thread类对象,将第一步实例化得到的Runnable对象作为参数传人Thread类的构造方法

    package com.iotek.day2;
    
    public class HelloRunnableDemo {
      public static void main(String[] args) {
        HelloRunnable h1=new HelloRunnable();
        //设置线程名字
        Thread t1=new Thread(h1,"A");
        t1.start();
        //设置线程名字
        Thread t2=new Thread(h1,"B");
        t2.start();
    }
    }
    
    
    class HelloRunnable implements Runnable{
        
        
        
        @Override
        public void run() {
            for(int i=0;i<5;i++) {
                //根据Thread.currentThread().getName()得到线程名
                System.out.println(Thread.currentThread().getName()+i);
            }
            
        }
        
    }

     Runnable接口的好处
    //1.避免单继承的局限
    //2.适合资源的共享

    package com.iotek.day2;
    
    public class StudentThreadDemo {
        public static void main(String[] args) {
            /*TicketThread t1 = new TicketThread("A窗口");
            t1.start();
            TicketThread t2 = new TicketThread("B窗口");
            t2.start();*/
            TicketRunnable r1=new TicketRunnable();
            Thread t1=new Thread(r1,"A窗口");
            t1.start();
            Thread t2=new Thread(r1,"B窗口");
            t2.start();
        }
    }
    
    /*
     * class TicketThread extends Thread{ private int ticket=5; public
     * TicketThread(String name) { super(name); }
     * 
     * @Override public void run() { while (true) {
     * 
     * System.out.println(this.getName()+" "+(ticket--)); if (ticket<1) { break; } }
     * } }
     */
    
    class TicketRunnable  implements Runnable {
        private int ticket=5;
        @Override
        public void run() {
            while (true) {
    
                System.out.println(Thread.currentThread().getName() + " " + (ticket--));
                if (ticket < 1) {
                    break;
                }
            }
    
        }
    
    }

  • 相关阅读:
    ArcGIS API for JavaScript 学习笔记 (一) --第一个WebGIS应用程序
    C#学习之数据类型-(一:简介)
    用vs发布网站,IIS部署浏览网站的具体步骤。
    载入内存,让程序运转起来。
    placeholder的使用
    京东商城注册页使用的正则表达式(转)
    网站列表页竖直栏目图片灰色背景导航菜单代码
    CSS定义鼠标悬浮,图片出现边框
    生成虚线代码(小白自留)
    划过或点击下面带框的文本
  • 原文地址:https://www.cnblogs.com/tanlei-sxs/p/10004436.html
Copyright © 2020-2023  润新知