首页

Android多线程:如何实现两个相同的耗时任务

Android多线程 2018-05-30 4531

对于Android开发中多线程的应用,常见是多个任务的同时进行,那么这里举一个例子:实现2个窗口同时卖火车票;每个窗口卖100张,卖票速度都是1s/张。具体该如何做呢?下面专业app开发报价燚轩科技来为大家讲解一下。

main_activity.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.carson_ho.demoforthread.MainActivity">

//设置一个按钮用以启动卖票
    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="点击开始卖票"
        android:layout_centerInParent="true"
        />
</RelativeLayout>

MainActivity.java

package com.example.carson_ho.demoforthread;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {

    //主布局中定义了一个按钮用以启动线程
    Button button;

    //步骤1:创建线程类,继承自Thread类
    private class MyThread extends Thread{

        private int ticket = 100;//一个窗口有100张票
        private String name; //窗口名, 也即是线程的名字

        public MyThread(String name){
            this.name=name;
        }

        //在run方法里复写需要进行的操作
        @Override
        public void run(){
            while (ticket>0){
                ticket--;
                System.out.println(name + "卖掉了1张票,剩余票数为:"+ticket);

                try {
                    Thread.sleep(1000);//卖票速度是1s一张
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }

    }

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);

            //Button按下时会开启一个新线程执行卖票
            button = (Button) findViewById(R.id.button);
            button.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                    //步骤2:创建线程类的实例
                    //创建二个线程,模拟二个窗口卖票
                    MyThread mt1 = new MyThread("窗口1");
                    MyThread mt2 = new MyThread("窗口2");

                    //步骤3:调用start()方法开启线程
                    //启动二个线程,也即是窗口,开始卖票
                    mt1.start();
                    mt2.start();

                }
            });

        }
    }



测试结果如下:

好了,看到这里大家也都清楚运行的流程了,如果还存在疑问的话可以留言咨询我们。

分享到微信朋友圈 +
打开微信,点击底部的“发现”,使用 “扫一扫” 即可将网页分享到我的朋友圈。 如何使用?
推荐文章

热贴More +

服务范围More +

联系我们

请扫二维码联系客服

854221200@qq.com

185-3825-9583

QQ客服

关于  ·  招聘  ·  案例中心  ·  网站地图

©@2018 燚轩科技版权所有 豫ICP备16015002号-4

百度提供搜索支持