线程相关知识
来源:互联网 发布:x的平方c语言 编辑:程序博客网 时间:2024/06/15 20:38
1 进程与线程的区别
一个程序最少有一个进程,一个进程最少有一个线程,线程是进程的一个实体。
进程有自己独立的地址空间,而多个线程共享进程之间的资源。
一个线程可以创建和撤销另一个线程,一个进程中的多个线程可以并发执行。
线程有自己的堆栈和局部变量,但没有独立的内存空间,一个线程被损坏后整个进程死掉,所以多进程比多线程更健壮。
2 线程的五种状态:创建、就绪、运行、堵塞、死亡。
3 创建线程两种方式:实现Runnable接口和继承Thread类
两者区别:Java类只能单继承。继承Thread类不能扩展其他的类。可以用实现Runnable接口的方式避免单继承的局限性
继承Thread类创建线程只需创建类的实例,实现runnable接口创建线程需要创建类的实例后再new thread()
继承thread类创建的多线程各自拥有自己的资源,虽然执行的是相同代码,但是互不干扰,实现Runnable接口创建的线程使多个线程共享同一份资源。
例如
继承thread类的方法
public class ThreadTest extends Thread{
private int num=100;
@Override
public synchronized void run() {
while(num>0){
System.out.println(num--+Thread.currentThread().getName());
}
}
public static void main(String[] args) {
ThreadTest test1=new ThreadTest();
ThreadTest test2=new ThreadTest();
ThreadTest test3=new ThreadTest();
test1.start();
test2.start();
test3.start();
}
}
运行结果
100Thread-2
100Thread-0
100Thread-1
99Thread-0
99Thread-2
98Thread-0
99Thread-1
97Thread-0
98Thread-2
96Thread-0
98Thread-1
95Thread-0
94Thread-0
。。。
结果显示这三个线程并不是依次交替执行,而是在三个线程同时被执行的情况下,有的线程被分配时间片的机会多,有的线程分配的时间片少。三个线程共执行300次。
实现runnable接口的方法
public class ThreadTest2 implements Runnable{
private int num=100;
@Override
public synchronized void run() {
while(num>0){
System.out.println(num--+Thread.currentThread().getName());
}
}
public static void main(String[] args) {
ThreadTest2 test1=new ThreadTest2();
Thread t1=new Thread(test1);
Thread t2=new Thread(test1);
Thread t3=new Thread(test1);
t1.start();
t2.start();
t3.start();
}
}
执行结果:共执行100次。如多个窗口卖电影票,必须用实现runnable接口
- 线程的相关知识
- 线程相关知识
- 线程的相关知识
- 线程相关知识
- Java线程相关知识
- 线程的相关知识
- 线程相关知识
- 线程相关知识总结
- 线程相关知识
- java 线程相关知识
- Java线程相关知识
- 线程的相关知识
- 进程、线程相关知识汇总
- Java线程相关知识总结
- java线程相关知识整理
- 线程 相关知识 (一)
- 线程 相关知识(二)
- 操作系统线程相关知识学习
- 修改JBoss的默认HTTP端口号
- HDU 4771 Stealing Harry Potter's Precious(BFS)
- uCOS-II学习笔记之就绪表
- [c++]LeetCode Median of Two Sorted Arrays问题
- GB和GiB的区别
- 线程相关知识
- Qt模板库、工具即控件项目示例
- C语言基础知识
- Qt5布局管理项目示例
- ASI和AFN有什么区别
- 欢迎使用CSDN-markdown编辑器
- 复习网络体系结构与网络协议
- Java 类反射机制分析
- 终于看到golang的深入解读了