Java Thread(线程)
来源:互联网 发布:java闰年判断switch 编辑:程序博客网 时间:2024/05/29 14:01
程序
程序是一段静态的代码,它是应用程序执行的蓝本。
进程
进程是程序的一次动态执行过程,它对应了从代码加载,执行到执行完毕的一个完整的过程,这个过程也是进程本身从生产,发展到消亡的过程。
操作系统
现在的操作系统可以同时管理一个计算机系统中的多个线程,也就是说可以让计算机系统中的多个进程轮流使用CPU资源。
线程与进程
Thread是Java.lang包下的一个类
在java中,线程也是一种对象,是java应用程序中的单任务流。但并非所有对象都可以称为线程,只有实现Runable接口的类的对象才能称为线程。所以创建线程必须实现Runable接口。
线程是比进程更小的执行单位,一个进程在执行的过程中可以产生多个线程。形成多条执行线索,也就是每条线程也有他自身的产生,发展到消亡的过程。线程间可以共享进程中的某些内存单元(包括代码和数据),线程的中断与恢复可以更加节省系统的开销。
并发
同时完成多个任务。
多线程
就是多个线程对象
线程的生命周期:
new,runnable,not runnable,dead
start() 启动线程
run() 线程执行
sleep() 优先级高的线程可以在它的run()方法中调用sleep()方法来使自己放弃cpu资源,休眠一段时间。
isAlive() 线程处于新建状态时,线程调用isAlive()方法返回false。在线程run()方法结束之前,也就是没有进入死亡状态之前,线程调用isAlive()方法返回true。
currentThread():可以查看当前使用CPU的线程
interrupt():一个占有CPU资源的线程可以让休眠的线程调用interrupt()方法唤醒自己。即导致休眠的线程发生InterruptedException异常。从而结束休眠,重新排队等待CPU资源。
public class TestThread implements Runnable { Thread test1, test2;//声明一个线程test1,test2 public TestThread(){//TestThread的构造方法 test1 = new Thread(this);//在TestThread类的构造方法中新建一个线程test1。 test2 = new Thread(this); //this的意思是新建一个线程test1之后,并把这个test1托管给TestThread这个类来运行 test1.start();//调用start方法启动这个线程 test2.start(); } public static void main(String[] args) {//java的主线程 new TestThread(); } @Override public void run() {//实现runnable接口后实现的方法 这个方法体叫做线程体// while(true){// System.out.println("我是这个线程");// try {// test1.sleep(1000);// } catch (InterruptedException e) {// // TODO Auto-generated catch block// e.printStackTrace();// }// } Thread th = Thread.currentThread(); if (th == test1) { System.out.println("我是线程1"); } if(th == test2){ System.out.println("我是线程2"); } }}
线程同步:
在处理多线程的问题时,我们必须注意这样一个问题:当两个或者多个线程同时访问一个变量,并且一个线程需要修改这个变量。我们应该对这样的问题做出处理。
线程同步就是若干个线程都需要使用一个synchronized修饰的方法,及线程中的若干个线程都需要使用一个方法,而这个方法用synchronized给予了修饰。
多个线程调用synchronized方法必须遵守同步机制:
- [Java] Thread 线程
- JAVA 线程Thread
- java线程thread详解
- java 线程 thread
- Java 线程Thread
- Java线程 Thread
- Java 线程 Thread Runnable
- Java-Thread (线程)
- Java--线程(Thread)
- JAVA中线程Thread
- Java Thread(线程)
- java 线程 thread runnable
- Java线程Thread类
- Java Thread线程
- java Thread线程实例
- Java线程Thread
- Java之线程Thread
- java-Thread(线程)
- 12个javascript技巧
- msconfig bcdedit
- 剑指offer---面试题6重建二叉树
- Python datetime.datetime.isoweekday和date.weekday()
- ptrace运行原理及使用详解
- Java Thread(线程)
- 系统监控命令
- 第2章 大型网站及其架构演进过程
- 内存溢出之Tomcat内存配置
- Java时间差
- Error:Execution failed for task ':XXX:processReleaseResources'.
- 排序算法值三 —— 希尔排序
- 拖放事件
- ItemTouchHelper实现拖拽和侧滑删除