博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
线程的操作方法
阅读量:4915 次
发布时间:2019-06-11

本文共 2833 字,大约阅读时间需要 9 分钟。

线程的操作方法

嘿嘿!这里比较重复麻烦奥~~~ 我该怎么水过这篇博客

1.线程休眠

  sleep()方法指定一个参数用于该线程的休眠时间,要加异常处理,线程醒来后并不能保证立刻进入运行状态,只能保证它进入就绪状态。

代码:

try {    sleep(1000);} catch (InterruptedException e) {    e.printStackTrace();}

 

2.线程加入

  当某个线程使用join()方法加入到另一个线程中时,另一个线程会等待这个空降兵执行完毕之后再继续执行。

举个例子,线程加入一般是这样的情况:主线程生成并起动了子线程,如果子线程里要进行大量的耗时的运算,主线程往往将于子线程之前结束。

但是如果主线程处理完其他的事务后,需要用到子线程的处理结果,也就是主线程需要等待子线程执行完成之后再结束,这个时候就要用到join()方法了。

代码:提醒大家一下,这个就休眠时间啊真的是一门学问奥。

station.java

package com;public class station extends Thread {    int ticket=10;//票数    static Object lock="locked";        boolean node = true;    public station(String name) {        super(name);    }    @Override    public void run() {        super.run();        while(ticket>0) {            synchronized(lock) {                if(ticket>0) {                    System.out.println(getName()+"卖出第"+ticket+"张票");                    --ticket;                    if(ticket==5&&node) {                        try {                            Thread.sleep(1000);                            Thread addticket = new Thread(new Runnable() {                                @Override                                public void run() {                                    add();                                    System.out.println("补票了");                                }                            });                            addticket.join();                            addticket.start();                            Thread.sleep(2000);                        } catch (InterruptedException e) {                            e.printStackTrace();                        }                    }                }else {                    System.out.println("票卖完了");                }            }//            try {//                sleep(1000);//            } catch (InterruptedException e) {//                e.printStackTrace();//            }        }    }    public void add() {        ticket+=6;        node=false;    }}

App.java

package com;import java.util.ArrayList;import java.util.concurrent.ExecutionException;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.Future;public class App {    public App() throws InterruptedException, ExecutionException {                s1.start();//启动    }    public static void main(String[] args) throws InterruptedException, ExecutionException {        new App();    }}

3.线程中断

  现在已经不用stop();了。现在提倡再run()方法中使用无限循环然后用boolean标记控制循环的终止。

代码:

boolean isContinue = true;    public void run() {        while(true) {            ..........            ..........            ..........            if(isContinue)//布尔值                break;        }    }    private void setContinue() {        this.continue = false;    }

4.线程礼让(   yield();不过这个似乎没多少用,我就不解释了,想要了解的话就搜别人的博客看吧   )拜拜!~!~!~

转载于:https://www.cnblogs.com/cattree/p/10662572.html

你可能感兴趣的文章
MSMQ的简单使用
查看>>
cocos2dx移植android平台
查看>>
回应“主流WebGIS实现的原理.矢量地图”
查看>>
笔记50 | Android自定义View(一)
查看>>
aspectj 获取 连接点 方法!
查看>>
35个seo优化技巧
查看>>
poi横纵导出
查看>>
JAVA中Comparator的使用
查看>>
使用 Cosmos DB 创建和查询 NoSQL 表
查看>>
PAT1043 Is It a Binary Search Tree
查看>>
1044 Shopping in Mars
查看>>
Django 2 数据库配置
查看>>
weka文本分类之二 批量过滤
查看>>
SCM_SVN_CVS
查看>>
设计抗混叠滤波器的三大指导原则(转载)
查看>>
join() 和 sleep() 区别
查看>>
MySQL 'localhost' (10061)解决方法
查看>>
信息安全-1:python之playfair密码算法详解[原创]
查看>>
Linq
查看>>
OC中新增的数据类型
查看>>