多线程使用方法(启动,休眠,干扰)

原创 2017年01月03日 11:53:10

1、写一个子类继承Thread,重写run方法

package thread0103;

public class Thread0103 {
    public static void main(String[] args) {
        //实例化自定义线程对象
        Testthread t1=new Testthread();
        //调用start方法启动线程
        t1.start();
        t1.setName("线程1");
        System.out.println("a");

        Testthread t2=new Testthread();
        t2.start();
        t2.setName("线程2");
        System.out.println("b");

        Testthread t3=new Testthread();
        t3.start();
        t3.setName("线程3");
        System.out.println("c");
    }

}
package thread0103;

public class Testthread extends Thread{//自定义线程继承Thread类
    @Override//重写父类的run方法
    public void run() {
        for(int i=0;i<100;i++){
        //调用Thread对象的线程名称
        System.out.println(Thread.currentThread().getName()+":i="+i);

        if(i==50){
            try {
                Thread.sleep(2000);//定义线程到达50后等待2秒
            } catch (InterruptedException e) {
                System.out.println("线程等待异常");
            }
        }
    }
    }

}

2、实现Runable接口,重写run方法,将此类作为运行目标传给Thread对象

package com.duoxiancheng.ytf;

public class MyThread implements Runnable{
    @Override
    public void run() {
        for (int i = 0; i <=100; i+=10) {
            if(i==0){
                System.out.println("电影《"+Thread.currentThread().getName()+"》开始下载");

            }else if(i==100){
                System.out.println("电影《"+Thread.currentThread().getName()+"》已经下载"+i+"%,下载完成!");
            }else{
                System.out.println("电影《"+Thread.currentThread().getName()+"》已经下载"+i+"%");
            }
            try {
                Thread.sleep(1500);
            } catch (InterruptedException e) {
                System.err.println("线程被干扰");            }
        }
    }

}
package com.duoxiancheng.ytf;

public class MyComputer {

    public static void main(String[] args) {
        System.out.println(Thread.currentThread().getName()+"正在运行");
        MyThread mt1=new MyThread();
        Thread t1=new Thread(mt1);
        t1.setName("追龙");

        MyThread mt2=new MyThread();
        Thread t2=new Thread(mt2);
        t2.setName("奇门遁甲");

        MyThread mt3=new MyThread();
        Thread t3=new Thread(mt3);
        t3.setName("机器之血");

        MyThread mt4=new MyThread();
        Thread t4=new Thread(mt4);
        t4.setName("大闹天竺");

        MyThread mt5=new MyThread();
        Thread t5=new Thread(mt5);
        t5.setName("我在故宫修文物");

        t1.start();
        t2.start();
        t3.start();
        t4.start();
        t5.start();
        Scanner s= new Scanner(System.in);
        for (int i = 0; i < 10000; i++) {
            System.out.println("按回车键干扰");
            s.nextLine();       
            t1.interrupt();
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

        }

    }

}

这里写图片描述

版权声明:欢迎关注微信公众号:ytf0422

C++实现线程休眠

在java中,Thread.sleep(1000);可以让当前线程休眠1秒.那么C++中是如何实现线程休眠的呢?在C++中并没有让线程休眠的这样的函数,实现休眠其实是调用了windows的休眠函数Sl...
  • sealrose
  • sealrose
  • 2008年10月10日 12:09
  • 1776

线程干扰(Thread Interference)

设计一个简单的Counter类class Counter{ private int c = 0; public void increment(){ c++; }...
  • rjcs888
  • rjcs888
  • 2016年07月03日 22:41
  • 721

线程概述,优先级,睡眠,创建及终止(VC_Win32)

目录 线程概述 线程内幕 线程相关函数详解 线程创建 线程睡眠(CPU时间片分配方式) 线程的优先级 线程的终止 线程同步 (本章节中例子都是用 VS2005 编译调试的) 线程概述 组成...
  • zhang_sinner
  • zhang_sinner
  • 2015年01月27日 15:25
  • 572

Java多线程七:线程调度(休眠)sleep()

线程休眠线程休眠的目的是使线程让出CPU的使用权.当线程休眠时,会将CPU资源的使用交给其他线程,以便能够线程之间的轮换调用.当休眠一定时间后,线程就会苏醒,然后进入准备状态等待执行.sleep()函...
  • yin380697242
  • yin380697242
  • 2016年10月24日 20:48
  • 3031

多线程休眠

在多线程环境下,当使用sleep函数使某一进程休眠时,该线程会对外部信号失去响应。建议将休眠时间分割成较小的时间片,循环调用sleep。如下所示:for (i=1; i{    sleep(1);  ...
  • zyp2671
  • zyp2671
  • 2010年01月05日 09:09
  • 1975

马士兵-多线程学习第02课-线程状态和线程休眠

线程的状态: 线程的5中状态分别是创建,准备就绪,开始运行,运行中阻塞,结束 线程控制的基本方法 线程的中断API: 线程的休眠API:注意是static的 举例说明线...
  • hblfyla
  • hblfyla
  • 2016年10月31日 21:25
  • 278

Java线程(四):线程中断、线程让步、线程睡眠、线程合并

最近在Review线程专栏,修改了诸多之前描述不够严谨的地方,凡是带有Review标记的文章都是修改过了。本篇文章是插进来的,因为原来没有写,现在来看传统线程描述的不太完整,所以就补上了。理解了线程同...
  • ghsau
  • ghsau
  • 2013年12月26日 20:29
  • 33292

【C#.37】多线程中的Sleep以及子线程优先级

继续上篇,其实在写文章的过程中真的实践了不少,而且发现和自己原来认为的有挺多不同的。因此有错误的话请多指正。以下的内容都是经过试验得出的: using System; using Syste...
  • huiwuhuiwu
  • huiwuhuiwu
  • 2016年12月11日 14:00
  • 3475

线程的启动与休眠

上一节介绍了线程的创建之后呢,我们来讲讲线程的启动与休眠 在讲具体内容之前,我们先来介绍一下线程的五种状态Java线程具有五中基本状态新建状态(New):当线程对象对创建后,即进入了新建状态,如:T...
  • mrliqifeng
  • mrliqifeng
  • 2017年04月05日 22:10
  • 222

禁用树莓派的xWindows休眠

所有的xWindows系统都有屏幕保护和休眠功能,屏幕保护功能可以通过桌面设置进行控制,那么休眠咋控制呢? 要想永久禁用树莓派的休眠功能其实横简单,只要在一个能够自动运行的脚本里加入如下内容: xse...
  • huayucong
  • huayucong
  • 2015年07月23日 17:04
  • 9670
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:多线程使用方法(启动,休眠,干扰)
举报原因:
原因补充:

(最多只允许输入30个字)