学习笔记--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//当线程执行此方法时,释放执行资格
- 学习笔记--java基础--多线程基本概念
- Java 多线程基础-基本概念
- java多线程学习笔记(1)——基本概念介绍
- java学习笔记(4)基本概念之异常、多线程常
- java基础学习多线程学习笔记
- Java 学习笔记(基本概念)
- java基础学习笔记_多线程
- 【java多线程学习】多线程的基本概念
- Linux多线程基础学习(一)基本概念
- java基础 -- 多线程总结(一)--基本概念
- Java多线程基础--01之 基本概念
- Java多线程系列--【基础篇01】- 基本概念
- JAVA多线程技术学习笔记(一)——多线程基本概念
- linux多线程学习笔记一---基本概念
- c# 多线程学习笔记 (一)基本概念
- 机器学习基础学习笔记1-基本概念
- java基础学习--多线程
- Java多线程基础学习
- VMware Tools (ubuntu系统)安装详细过程与使用
- HDU 3743 (树状数组,离散化)
- HTML5(四)html5<canvas路径和三角函数的故事>(中)
- Linux(CentOS6.5)系统安装Windows字体
- 深入比较ThreadLocal模式与synchronized关键字
- 学习笔记--java基础--多线程基本概念
- 阿里云与腾讯云基于linux(centos)搭建pptp vpn时的区别
- "互联网+"系列(6) 顺势而为,势是什么? 下篇
- Android学习小结3(活动)
- C++库常用函数一览(<string><cctype><algorithm><cmath><cstdlib><iomanip><numeric>)
- 1.1 1.2 1.3 1.4 1.5 1.6 1.7 人工智能
- 计划变化
- s_重载匹配
- 【Java技术-反射】Java反射机制