zoukankan      html  css  js  c++  java
  • java多线程(三)----线程的结束

    1.使用volatile 标示位,在线程类中定义标示位,并提供相应的外部结束方法,在需要结束的时候调用该方法。

    public class Task extends Thread {
    
    private volatile boolean flag= true;
    
    public void stopTask() {
    
    flag = false;
    
    }
    
    @Override
    
    public void run() {
    
    while(flag){
    
    /* do your no-block task */
    
    }
    
    }
    
    }

    2、遇到一些其他的io阻塞怎么处理呢?这个时候java都会提供相应的关闭阻塞的办法。例如,服务器可能需要等待一个请求(request),又或者,一个网络应用程序可能要等待远端主机的响应,这个时候可以使用套接字close()方法

    public class SocketTask extends Thread {
    
    private volatile ServerSocket server;
    
    
    public void stopTask(){
    
    try {
    
    if(server!=null){
    
    server.close();
    
    System.out.println("close task successed");
    
    }
    
    } catch (IOException e) {
    
    System.out.println("close task failded");
    
    }
    
    }
    
    @Override
    
    public void run() {
    
    try {
    
    server = new ServerSocket(3333);
    
    } catch (IOException e) {
    
    e.printStackTrace();
    
    }
    
    }
    
    public static void main(String[] args) throws InterruptedException {
    
    
    SocketTask task = new SocketTask();
    
    task.start();
    
    Thread.sleep(1000);
    
    task.stopTask();
    
    }
    
    }
    采菊东篱下,悠闲现南山~
  • 相关阅读:
    2016.6.26考试
    爆搜。。。。。。。
    9.18目标
    9.17水题总结
    9.16测试
    9.10考试
    jzoj P1163 生日派对灯
    9.04考试总结
    8/8刷题记录
    a[i++]
  • 原文地址:https://www.cnblogs.com/ChaosJu/p/4756335.html
Copyright © 2011-2022 走看看