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;
                }
            }
    
        }
    
    }

  • 相关阅读:
    Lucene.Net 2.3.1开发介绍 —— 二、分词(一)
    控制‘控制台应用程序’的关闭操作
    详解for循环(各种用法)
    敏捷软件开发
    Sql Server的一些知识点
    在SharePoint 2010 中配置Remote Blob Storage FILESTREAM Provider
    使用LotusScript操作Lotus Notes RTF域
    JOpt Simple 4.5 发布,命令行解析器
    John the Ripper 1.8.0 发布,密码破解工具
    PacketFence ZEN 4.0.1 发布,网络接入控制
  • 原文地址:https://www.cnblogs.com/tanlei-sxs/p/10004436.html
Copyright © 2011-2022 走看看