学习笔记--java基础--多线程基本概念

来源:互联网 发布:mac网页静音怎么取消 编辑:程序博客网 时间:2024/05/22 09:38

什么是线程?

在某一时间里,计算机可能存在多个任务,这些不同的任务可以由不同的进程去完成。进程就是一个正在执行的程序,每一个进程都有一个执行顺序,该顺序是一条执行路径,或者说一个控制单元

线程就是进程中一个独立的控制单元,线程控制着进程的执行。一个进程至少包含着一个线程。


java VM(虚拟机)启动的时候有一个进程java.exe负责执行程序。显然该进程中至少有一个线程在负责执行java程序。而且这个线程的运行代码存在于main方法中------该线程称为主进程



多线程存在的意义?

若一个进程内有多个线程,cpu能随机快速地切换执行不同的线程,使两个线程看起来像是在同时执行,实现了一个进程内多任务同时执行的效果。



如何创建线程?

JDK提供了两种创建线程的方式。

一:①继承Thread类,并重写Thread类的run()方法

     ②创建该类的对象,并调用start()方法(注意不是调用run方法,start才是正真调用底层资源的方法)




     二:①定义类A实现Runnable接口

    ②重写接口中的run()方法

    ③创建一个A类的对象

    ④使用Thread()的构造方法new Thread(A)创建一个线程对象


public class ThreadDemo extends Thread {public void run(){for(int i=0;i<300;i++){System.out.println("hello world");}}public static void main(String[] args) {ThreadDemo t = new ThreadDemo();t.start();for(int i=0;i<300;i++){System.out.println("______");}}}


public class RunnableDemo implements Runnable{public void run(){for(int i=0;i<100;i++){System.out.println("unnable");}}public static void main(String[] args) {RunnableDemo r = new RunnableDemo();Thread t = new Thread(r);t.start();for(int i=0;i<100;i++){System.out.println("____________");}}}

关于两种方法创建线程的区别:

1.实现方法避免了单继承的局限性。(如当一个线程已经继承了其他类就无法继承Thread类了)定义线程时,多使用实现的方法

    2.继承方法线程执行代码再Thread类中的run方法中,实现方法在接口Runnable中的run方法中



线程的状态





和线程有关的一些常见的方法总结

setName();

getName();//默认名字是Thread-编号

 

构造方法Thread("name")//可以在子类中调用super()直接给线程取名

 

Static Thread currentThread() //返回当前正在执行的线程对象,是一个静态方法

 

interrupt()//中断,强制使线程从冻结状态回到运行或者阻塞状态,当interrupt中断wait,sleep等方法时,wait,sleep被意外中断会抛出异常,对异常进行处理可以使线程 跳出循环

 

setDaemon(boolean on)//当正在运行的线程都是守护线程时,java虚拟机退出。或者换种说法,守护线程就是后台线程,当前台线程都结束时,后台线程自动结。 注意这个方法一定要在线程启动前调用

 

join//A线程执行到B线程的.join方法时,A就会放弃执行资格而等待,等B线程都执行完A才会执行,join可以用来临时线程的加入

 


toString()//返回该线程字符串表示形式,包括线程名称,优先级和线程组



线程的优先级可以用setPriority();设置,范围是1-10,一般用JDK给出的3个字段设置

yield//当线程执行此方法时,释放执行资格







0 0
原创粉丝点击