java 线程
Posted 一只发霉的猪
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 线程相关的知识,希望对你有一定的参考价值。
异步+线程池:两个线程A、B可以并发执行,没有依赖关系,两者可以独立运行
https://www.cnblogs.com/liumaowu/p/9293627.html
同步:线程A、B之间有依赖关系,B运行前必须A先运行完,故同步已经实现了互斥
互斥:线程A、B同时访问临界资源,同时只有一个线程能访问临界资源
进行多线程代码的实现有两种方式:
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
以上是关于java 线程的主要内容,如果未能解决你的问题,请参考以下文章