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()可以获得返回值

  • 相关阅读:
    汉诺塔
    给出一个字符串,要求插入最少的字符,使得原字符串为一个回文串
    最长回文子串
    回文数 第N个回文数
    屋子里有1到100号100盏关闭的灯
    无头结点的单链表删除一个中间结点
    单链表逆转
    编程之美2.21 加法
    在一个数组中找 差值最大的两个数 差值最小的两个数 推广到 点对
    斐波那契
  • 原文地址:https://www.cnblogs.com/zhangchiblog/p/8214594.html
Copyright © 2011-2022 走看看