67194:67194 > HELLO JAVA
[导读]java多线程除了Thread类,还可以使用Runnable接口:实现Runnable的run函数,然后new Thread类传入Runnable接口类,调用start启动 线程sleep函数可以使

java多线程除了Thread类,还可以使用Runnable接口:实现Runnable的run函数,然后new Thread类传入Runnable接口类,调用start启动 线程sleep函数可以使用静态函数Thread.currentThread().sleep。 需要注意的是 只有run内部调用的函数才是在新开辟的线程中。
package com.test.java;

import javafx.scene.Parent;

public class Thread1 implements Runnable {
    private Test1 parent =null;
      public Thread1(Test1 parent) {
        this.parent = parent;
        // TODO 自动生成的构造函数存根
    }
    @Override
    public void run() {
        // TODO 自动生成的方法存根
        while (true) {
             try {
                Thread.currentThread().sleep(1000);
            } catch (InterruptedException e) {
                // TODO 自动生成的 catch 块
                e.printStackTrace();
            }
             parent.data++;
             System.out.println(parent.data);
        }

    }

}
package com.test.java;

public class Test1 { 
public  int data = 0;
    public Test1()
    {  
        new Thread(new Thread1(this)).start();
    }

    public static void main(String[] args) {
             new Test1();
  }

}
为何需要Runnable类,有时候一个类封装完毕,后期需要加入线程可能不是很容易,实现Runnable接口会在这方面方便很多
package com.test.java;

public class Test1 implements Runnable{ 
public  int data = 0;
    public Test1()
    { 
        new Thread(this).start();
    }

    public static void main(String[] args) {
            Test1 test1 = new Test1();
  }

    @Override
    public void run() {
        // TODO 自动生成的方法存根
        while (true) {
            data++;
            System.out.println(data);
            try {
                Thread.currentThread().sleep(100);
            } catch (InterruptedException e) {
                // TODO 自动生成的 catch 块
                e.printStackTrace();
            }
        }


    } 

}
如果需要线程操作,需要保存Thread指针
package com.test.java;

public class Test1 implements Runnable{ 
public  int data = 0;
public Thread mThread;//保存的线程变量 用来操作此线程
    public Test1()
    { 

        new OldThread().start();
        mThread=new Thread(this);
        mThread.start();

    }

    public static void main(String[] args) {
             new Test1();
  }

    @Override
    public void run() {
        // TODO 自动生成的方法存根
        while (true) {
            data++;
            System.out.println(data);
            try {
                Thread.currentThread().sleep(100);
            } catch (InterruptedException e) {
                // TODO 自动生成的 catch 块
                e.printStackTrace();
                break;
            }
        }


    } 
    //用来关闭线程当计数到10
    class  OldThread extends Thread{

        @Override
        public void run() {
            // TODO 自动生成的方法存根
             while (true) {
                 if (data>10) {
                    mThread.interrupt();
                }
                 try {
                    sleep(10);
                } catch (InterruptedException e) {
                    // TODO 自动生成的 catch 块
                    e.printStackTrace();
                }

            }
        }

    }

}

HELLO JAVA

541 篇文章

关注

发布文章

技术子站

更多

论坛活动

  • TI圣诞狂欢月,答题礼不停
    TI圣诞狂欢月,答题礼不停
  • 上传资源瓜分5000元现金奖励!
  • 学习TI线上培训,赢500元京东卡!
  • 新年历,ADI精品视频课堂开始啦
更多

资料下载

  • (网盘)干货-Altium Designer20 高效实用4层PCB视频课程+配套练习文件
  • (网盘)注册电气工程师考试资料及视频资源
  • (网盘)老顽童STM32开发板开发App及资料
  • (网盘)智芯STM32开发板资料
  • (网盘)刘凯老师STM32视频教程及配套资源
  • (网盘)电路精讲班视频
  • (网盘)quartus基本语法等
  • 非接触式电子体温计(额温枪)PCB+程序源码
  • AD常用3D封装库(Step)【常用贴片篇】
  • (网盘)电路强化班视频
更多

技术专题

  • 单片机编程App的使用
    单片机编程App的使用
  • 二极管的应用及二极管正负极的判断
    二极管的应用及二极管正负极的判断
  • 电路仿真App
    电路仿真App
  • 电磁炉维修的方法
    电磁炉维修的方法
  • 功放维修的方法
    功放维修的方法
  • 电焊技术的应用
    电焊技术的应用
  • 电路设计App的应用
    电路设计App的应用
XML 地图 | Sitemap 地图