zoukankan      html  css  js  c++  java
  • 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();



  • 相关阅读:
    Visual Studio LightSwitch
    Android 虚拟机与真机调试配置
    点击手机 menu 硬件按钮后的显示及处理
    Windows Phone 7 真机调试
    Android 调试
    Android 新建项目 页面
    今天我的Windows Phone 7 HTC HD7 手机 升级 NoDo 了 分享一下经验
    Activity 之间调用与参数传递
    Android widget 组件
    解决 warning: found plain 'id' attribute; did you mean the new 'android:id' name? 问题
  • 原文地址:https://www.cnblogs.com/yyjxxd/p/5478013.html
Copyright © 2011-2022 走看看