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