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

posted on 2018-01-06 16:32  张小泽的小号  阅读(175)  评论(0编辑  收藏  举报

导航