使用多线程和并发编程(一)

一.先初步了解一下基本的概念

进程:在一个操作系统中,每个独立执行的程序都可以是一个进程。

线程:一个程序至少有一个进程,一个进程至少有一个线程,java里有一个主线程和垃圾回收线程。

线程的3中创建方式:

 1.继承Thread类

 2.实现Runnable接口

 3.实现Callable接口,和Future、线程池一起使用

线程的优先级:

 优先级的返回是1-10,默认是5,数越大优先级越高。

join的作用是:

 等待该线程终止,指的是主线程等待子线程的终止。子线程调用了join方法,只有子线程执行完之后才会调用主线程。(主线程需要用到子线程的处理结果是使用join)

 

二.多线程之间的状态转换

使用多线程和并发编程(一)

 

 

状态之间装换的demo:

package cn; public class ThreadDemo extends Thread { private boolean runningFlag=false; public ThreadDemo(){ runningFlag = false; } public synchronized void setRunningFlag(boolean runningFlag) { this.runningFlag = runningFlag; if(runningFlag){ this.notify(); }else{ try { System.out.println("线程"+Thread.currentThread().getName()+"开始等待"); this.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } } @Override public void run() { sayHello(); } //锁池状态 public synchronized void sayHello(){ while(true){ if(!runningFlag){ try { System.out.println("线程"+Thread.currentThread().getName()+"开始等待"); this.wait();//等待状态 } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } }else{ try { sleep(3000);//堵塞状态 System.out.println("线程"+Thread.currentThread().getName()+"任务完成\n"); setRunningFlag(false); //让当前线程处于等待任务状态 } catch (InterruptedException e) { e.printStackTrace(); } } } } public static void main(String[] args) { int i=10; while (i-->0) { //新建创建 ThreadDemo demo=new ThreadDemo(); demo.setName("demo"+i); demo.setRunningFlag(true); //可运行状态,start之后等待cpu获取时间片 demo.start(); } } }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzwjyg.html