07---多线程03
来源:互联网 发布:c语言开发工具 编辑:程序博客网 时间:2024/06/08 19:17
1.中断线程的运行:
当一个线程运行的时候,另一个线程可以调用对应的Thread的对象的
interrupt()方法来中断它;
public void interrupt();
2.判断线程是否中断:
public boolean isInterrupted();
3.多线程资源协调问题:
多线程同时去操作一个资源是总会出现一些问题;
例如:两个人同时取钱,如果都是去一个账号里面的钱,切里面有1000元;
这是两个人同时看到的都是1000,并且两个人又同时输入1000,各取一千
这样就会出现问题了;
所以此时出现了同步;
4.用synchronized来标识的区域或方法即为监视器监视的部分----表示一个同步操作部分;
同步操作就是在方法之中加入一个synchronized 关键字,表示此方法为同步方法;
class Demo01 implements Runnable{
private int ticket=10;
//加入一个同步方法
public synchronized void fun(){
//把需要同步的地方放在同步方法中;
if(ticket>0){
try{
Thread.sleep(100);
}
catch(Exception e){
}
System.out.println(Thread.currentThread().getName()+"---》卖票:"+ticket--);
}
}
public void run(){
while(ticket>0){
this.fun();
}
}
}
public class Demo{
public static void main(String args[]){
Demo01 d=new Demo01();
Thread t1=new Thread(d,"售票点A");
Thread t2=new Thread(d,"售票点B");
Thread t3=new Thread(d,"售票点C");
t1.start();
t2.start();
t3.start();
}
}
5.提供了 synchronized 关键字 的第二种用法,同步代码块;
synchronized(对象){
同步代码
}
这个对象指的是调用该synchronized内容的 对象,当然就是当前进程了,说以用this;
class Demo01 implements Runnable{
private int ticket=10;
public void run(){
//同步代码块
synchronized(this){
while(ticket>0){
try{
Thread.sleep(100);
}
catch(Exception e){
}
System.out.println(Thread.currentThread().getName()+"---》卖票:"+ticket--);
}
}
}
}
public class Demo{
public static void main(String args[]){
Demo01 d=new Demo01();
Thread t1=new Thread(d,"售票点A");
Thread t2=new Thread(d,"售票点B");
Thread t3=new Thread(d,"售票点C");
t1.start();
t2.start();
t3.start();
}
}
- 07---多线程03
- 03 多线程
- Chap 07: 多线程
- 多线程11天--07
- 多线程12天--07
- 07---多线程01
- 07---多线程02
- 07---多线程04
- 07_Java 多线程编程
- 2016/07/20 多线程
- 多线程11天--03
- 多线程12天--03
- 03 Java多线程
- 2014/03/11 多线程
- 多线程03---NSThread
- Python 多线程学习03
- java多线程系列03
- day10_python多线程03
- 创建index之前如何确定其大小
- Git 中文教程
- 到世界各地去扔纸团儿:【Paper Toss: World Tour HD】
- 07---多线程02
- 批量表结构提取和批量建表
- 07---多线程03
- yourenduwanglai的鬼话连篇(四)
- 07---多线程04
- 关于Extjs--- Ext.onReady()的用法
- 08---java IO编程01
- Windows Mobile下使用Native C++开发日志类
- yourenduwanglai的鬼话连篇(五)
- 08---java IO编程02
- 08---java IO编程03