• 线程Thread类及Runnable接口


    线程Thread类及Runnable接口

    Thread类

    1.Thread类在java.lang包中,使用时可以不用导包
    2.Thread类实现了Runnable接口,线程操作时需要重写run()方法,
    在run()方法中写线程操作的具体内容
    3.调用线程时先创建线程对象,线程对象调用start()方法,
    将线程添加到线程队列中

    测试代码

    package lesson01;
    
    public class Demo01 extends Thread{
    	@Override
    	public void run(){  // 重写run()方法
    		for(int i = 1;i<=9;i++){
    			
    			try {
    				sleep(500);
    			} catch (InterruptedException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    			System.out.println("          小白---");
    		}
    	}		
    }
    
    =======================================================
        
    package lesson01;
    
    public class Demo02 extends Thread{
    	
    	@Override
    	public void run(){ // 重写run()方法
    		for(int i = 1;i<=9;i++){
    			
    			try {
    				sleep(500);
    			} catch (InterruptedException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    			System.out.println("小黑+++          ");
    		}
    	}
    }
     
    =======================================================
        
    package lesson01;
    
    public class Demo03 extends Thread{
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		
    		Demo01 d1 = new Demo01(); // 创建线程对象
    		Demo02 d2 = new Demo02(); // 创建线程对象
    		
    		d1.start(); // 加入线程队列
    		d2.start(); // 加入线程队列
    	}
    
    }
    

    运行结果

    运行结果

    Runnable接口

    通过Runnable接口创建线程的步骤如下:
    1、定义实现Runnable接口的类,并实现该类中的run()方法。
    Thread在java.lang包中不用导入
    2、建立一个Thread对象,并将实现的Runnable接口的类的对象作为参数传入Thread类的构造方法。
    3、通过Thread类中的start()方法启动线程,并运行。
    注:直接调用Thread类或Runnable类对象的run()方法是无法启动线程的,这只是一个简单的方法调用必须通过Thread方法中的start()才行。

    测试代码

    package ThreadA;
    import javax.swing.*;
    
    //线程实现窗口标语循环滚动Demo
    public class MyFrameThread extends JFrame implements Runnable {
        JLabel lb;
        int x = 0;
        //JTextField tf;
        MyFrameThread(String s){
            super(s);
            setBounds(0,0,600,400);
         // setLayout(new FlowLayout());
            setLayout(null);
    
            lb =new JLabel("欢迎学习java!");
            lb.setBounds(x,150,200,50);
            add(lb);
            setVisible(true);
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }
    
        @Override
        public void run(){
            while(true){
                x++;
                x=x%600; // 对窗体宽度取余 确保字母再次从左侧开始 也可使用getWidth()方法
                lb.setBounds(x,150,200,50);
                try {
                    Thread.sleep(50);
                }catch(InterruptedException e){
                    System.out.println("出错了"+e.getMessage());
                }
            }
        }
    
        public static void main(String[] args) {
             MyFrameThread mft=new MyFrameThread("学习Runnable"); // mft对象中有一个线程待启动
              Thread t1=new Thread(mft); // 将mft对象添加到t1线程对象中
              t1.start(); // t1线程对象加入到线程队列中
        }
    }
    

    运行结果

    实现Runnable接口线程运行结果

  • 相关阅读:
    就南通大学教务管理系统微信公众号的个人看法
    设计一款给爸爸妈妈用的手机
    .NET中DLL“没有可放置在工具箱的组件”—FreeTextBox
    如何查看.Net源代码vs版本号以及C#项目中各文件的含义
    .NET在后置代码中输入JS提示语句(背景不会变白)
    Docker技术学习
    学习linux基本命令
    性能相关英文单词学习
    常见Http状态码的含义
    学习siege实战
  • 原文地址:https://www.cnblogs.com/xiaoyuzhou55/p/11182789.html
Copyright © 2020-2023  润新知