zoukankan      html  css  js  c++  java
  • 多线程(一)


    进程与线程

    进程

    一个进程就是一个执行中的程序,每一个进程的内部数据和状态都是完全独立。

    是程序运行的基本单位。

    线程

    程序中单个唾弃的流控制称为线程。

    多线程是指单个进程中可以运行多个不同的线程,执行不同的任务。

    差别

    线程是划分比进程更小的执行单位。

    进程有专用的内存区域,线程只有共享内存单元。




    继承Thread与继承Runnable的区别

    class Thread1 extends Thread                       //继承Thread
    {
    	public void run()
    	{
    		for(int i=0;i<100;i++)
    		System.out.println("Thread1 is running.");
    	}
    }
    class ThreadDemo
    {
    	public static void main(String[] args)
    	{
    		Thread1 t=new Thread1();
    		t.start();
    		for(int i=0;i<100;i++)
    		{
    			System.out.println("main is running.");
    		}
    	}
    }


    class Thread1 implements Runnable                 //继承Runnable
    {
    	private int tickets=100;
    	public void run()
    	{
    		while(true)
    			if(tickets>0)
    				System.out.println(Thread.currentThread().getName()+" sale No."+tickets--);
    	}
    }
    class ThreadDemo
    {
    	public static void main(String[] args)
    	{
    		Thread1 t=new Thread1();
    		new Thread(t).start();
    		new Thread(t).start();
    		new Thread(t).start();
    	}
    }

    区别是继承Runnable可以创建多个线程共享资源。




    后台线程

    对于java而言,有一个前台在运行进程就不会结束,只有一个后台程序运行进程就会结束。

    class Thread1 implements Runnable
    {
    	public void run()
    	{
    		while(true)
    		{
    		System.out.println("Thread1 is running.");
    		}
    	}
    }
    class ThreadDemo
    {
    	public static void main(String[] args)
    	{
    		Thread1 t=new Thread1();
    		Thread tt=new Thread(t);
    		tt.setDaemon(true);                   //设置后台线程
    		tt.start();
    	}
    }



  • 相关阅读:
    Cassandra内部架构
    Cassandra数据模型
    windows10 docker安装使用
    vue用async、await实现同步请求
    navicat mysql 书写存储过程并导出成sql
    idea svn 文件还原到指定版本
    vscode vue 去掉语法提示
    elasticsearch regexp查询特殊字符处理
    redis中获取不同自增数的方法
    java Elasticsearch 进行嵌套子聚合
  • 原文地址:https://www.cnblogs.com/lisisong/p/5122624.html
Copyright © 2011-2022 走看看