javaoop__线程的问题

1. 线程是 比进程小的 执行单位

   为了实现多线程 有两种方法, 继承 thread 类 或者 实现 runnable 接口

                 两种方式 都需要 把 run() 重写

                  用 start() 调用

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

如果 是 使用 的 runnable 的方式, 就可以解决买票系统中 多个线程 处理 统一资源的问题(避免 的是 同号票的出现

同步可以解决 资源共享 的安全问题 (解决的是 0号 和负数票的出现)同步代码块和 同步方法

public void run() {
while(true){

synchronized (this) {

if(ticket>0){
try{
Thread.sleep(5000);
}catch(Exception e){
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+"卖出第"+ticket--+"张票");
}else{
break;
}
}
}
}

++++++++++++++++++++++++++++++++++++++++++++

public synchronized void SaleTicket(){
if(ticket>0){
try{
Thread.sleep(5000);
}catch(Exception e){
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+"卖出第"+ticket--+"张票");
}
}

 +++++++++++++++++++++++++++++++++++++++++++++++++

       2.    线程是 交互 运行的, 是相互的抢夺 CPU 的资源,

public class MyThread extends Thread {

int ticket=20;

public void run() {
System.out.println("我被调用了");
while(ticket>0){
System.out.println(Thread.currentThread().getName()+"卖出第" + ticket-- +"张票");
}
}
}

MyThread mt1=new MyThread();
mt1.start();

++++++++++++++++++++++++++++++++++++++++++++++++

3.然后就是 实现 的 runnable()接口

public class MyThread2 implements Runnable {

public void run() {
while(ticket>0){

System.out.println(Thread.currentThread().getName()+"卖出第"+ticket--+"张票");
}
}

}

MyThread2 myt1=new MyThread2();
Thread t1 = new Thread(myt1);
t1.start();



原文地址:https://www.cnblogs.com/yyjxxd/p/5478013.html