zoukankan      html  css  js  c++  java
  • 线程模型

    线程模型

    什么是程序

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

    什么是进程

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

    什么是线程

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

    什么是多线程

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

    多线程的特点

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

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

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

      同一进程中的多个线程之间可以并发执行.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;
                }
            }
    
        }
    
    }

  • 相关阅读:
    STL常用容器☞String容器
    初识STL
    函数模板
    多态
    运算符重载
    友元
    对象的初始化和清理
    C++内存分区模型
    传值和传地址
    const的使用
  • 原文地址:https://www.cnblogs.com/tanlei-sxs/p/10004436.html
Copyright © 2011-2022 走看看