zoukankan      html  css  js  c++  java
  • java多线程

    java多线程

    基础概念:

    1.多线程是多任务的一种特别的形式,但多线程使用了更小的资源开销。

    2.进程:包含由操作系统分配的内存空间,包含一个或多个线程。一个线程不能独立存在,他必须是进程的部分,一个进程一直运行,直到所有的非守护线程结束才终结。

    一个线程的生命周期

    线程也有一个从产生到死亡的过程。

     

    线程的优先级

    线程的优先级是一个Int类型的整数(1-10),线程级别越大,执行越优先,但是并不能保证执行顺序

    创建一个线程

    (1)实现Runnable接口

    (2)继承Thread类

    (3)通过callable和Future创建线程

    实现Runnable接口

    package com.cesec.utils.test;
    
    /**
     * Created by Administrator on 2018/1/6.
     */
    public class RunnableTest1 {
        public static void main(String[] args){
            RunnableDemo demo1 = new RunnableDemo("线程1");
            demo1.start();
            RunnableDemo demo2 = new RunnableDemo("线程2");
            demo2.start();
        }
    
    
    }
    
    class RunnableDemo implements Runnable{
        private String ThreadName;
        private Thread t;
    
        RunnableDemo(String ThreadName){
            this.ThreadName = ThreadName;
            System.out.println("creating  " + ThreadName);
        }
    
    
        @Override
        public void run() {
            System.out.println("Running " + ThreadName);
            try {
                for (int i = 4; i > 0; i--) {
                    System.out.println("Thread" + ThreadName + ":" + i);
                    Thread.sleep(50);
                }
            }catch (InterruptedException e){
                System.out.println("Thread:" + ThreadName + "interrupt");
            }
            System.out.println("Thread " + ThreadName + "exiting");
        }
    
        public void start(){
            System.out.println("Starting " + ThreadName);
            if(t == null){
                t = new Thread(this, ThreadName);
                t.start();
            }
        }
    }

    通过继承Thread方法来实现创建线程 

    Thread方法

    • start:jvm调用该线程的run方法
    • run:

    通过Callable和Future创建线程

    //callable类似于runnable,call类似于run方法,但是callable有返回值,call本身就有回复的功能
    public
    class CallableTest { public static void main(String[] args){ CallableDemo callableDemo = new CallableDemo(); try { String a = (String) callableDemo.call(); System.out.println(a); }catch (Exception e){ e.printStackTrace(); } } } class CallableDemo implements Callable{ @Override public Object call() throws Exception { System.out.println("this is work"); return "线程工作了"; } }

     FtureTask类似于Thread,但是是有返回值的,但是使用get()可以获得返回值

  • 相关阅读:
    Django配置MySQL数据库教程
    给大家发个Python和Django的福利吧,不要钱的那种~~~
    Django 设置admin后台表和App(应用)为中文名
    Django 配置JWT认证方式
    威联通(NAS)应用篇:自建OwnCloud网盘(百度网盘,拜拜~~~)
    请不要浪费你的生命,一文多发推广就用它(OpenWrite)
    Django ORM 查询表中某列字段值
    【Django 2.2文档系列】Model 外键中的on_delete参数用法
    嵌入式、C语言位操作的一些技巧汇总
    【RT-Thread笔记】IO设备模型及GPIO设备
  • 原文地址:https://www.cnblogs.com/zhangchiblog/p/8214594.html
Copyright © 2011-2022 走看看