标签:部分 info 停止 lin 基本 src 经典 extends tar
进行多线程代码的实现有两种方式:
1、继承Thread类 2、实现Runnable接口
方法一:继承thread类
当一个类需要按照多线程的方式处理时,可以让这个类直接继承自Thread类即可,而且继承的时候要覆写好Thread类中提供的run()方法:
范例:按照要求定义一个线程类
class MyThread extends Thread { // 继承Thread类
public void run(){ // 做为线程的主体
for(int x=0;x<5;x++){
System.out.println("x = " + x--) ;
}
}
};
方法二:实现runnable接口
两种实现方式的区别:
现在的代码中可以发现,count属性已经被所有的线程对象所共同拥有了
两种实现方式的联系:
线程的状态
每一个线程对象都要经历五个步骤:
1、初始化:当创建了一个新的线程对象时
2、等待:调用了start()方法
3、执行:调用run()执行的操作的过程
4、停止:因为所有的线程都需要进行CPU 资源的抢占,那么当一个线程执行完部分代码要交出资源,留给
其他线程继续执行。
5、卸载:所有的线程的操作代码都执行完毕之后,就将线程对象卸载下来。
在本程序中发现出现了一个main 线程,那么这个线程肯定是主方法产生的,之前一直强调,java 本身是属于多线程 的处理机制,所以每次java运行的时候,实际上都会启 动一个JVM的进程。那么既然是多线程的处理机制,实际上主方法是在一个JVM 上产生的一个线程而已,那么一个JVM 启动的时候至
少启动几个线程呢?两个:main、GC。
线程的同步与死锁
线程操作的经典案例——生产者和消费者
以上就是多线程的基本操作,但是在整个多线程存在一个经典的交互案例,生产者和消费者。先通过代码观察问题,
现在假设说要生产的是一组信息,此组信息有两种选项:
·oracle à 数据库
·java à www.sun.com.cn
标签:部分 info 停止 lin 基本 src 经典 extends tar
原文地址:https://www.cnblogs.com/smallpigger/p/9593949.html