zoukankan      html  css  js  c++  java
  • 线程

    一:什么是线程?

    线程是通过利用CPU的轮转,让程序中不同的代码段同时执行的机制

    二:Java是怎样写线程的?

    通过接口Runnable来实现的

    三:用一个小实例来展示java中的线程这一概念

    import java.awt.*;
    
    public class MyTest {
        public static void main(String[] args) {
            Frame f=new Frame();  //创建窗体
            f.setSize(300, 400);  //设置窗体大小
                
            f.show();  //窗体可见
            
            MyPanel mp=new MyPanel(); //实例化对象
            f.add(mp); //将mp添加到窗体
            
            Thread t=new Thread(mp); //用一个新的对象来包装run(),特别注意,new这个Thread对象的时候就放进去mp
            t.start();  //引用start
            
        
    
        }
    
    }
    import java.awt.Color;
    import java.awt.Graphics;
    import java.awt.Panel;
    
    public class MyPanel extends Panel implements Runnable{  //让MyPanel继承Panel,并且连接接口Runnable
        int x=150,y=0; //给小球设置起始坐标变量,并附初始值
        
    public void paint(Graphics g) {
        g.setColor(Color.BLUE);//设置小球的颜色
        
        g.fillOval(x, y, 20, 20);//设置小球的位置跟大小
        
    }
    @Override
    public void run() {  //这个run()方法必须的有,因为接了接口Runnable
        // TODO Auto-generated method stub
        while(true) {
            x++;//改变x跟y值
            y++;
            try{
                Thread.sleep(15);//线程中的阻塞,给小球设置下滑的速度为15毫秒,能让小球优雅地飞
          }catch(Exception e) {}
            repaint();//重画图像
                
            }
        }
        
    }

    四:练习让小球碰到屏幕后反弹,四个面都要被反弹

    import java.awt.*;
    
    public class MyTest {
        public static void main(String[] args) {
            Frame f=new Frame();  //创建窗体
            f.setSize(300, 400);  //设置窗体大小
                
            f.show();  //窗体可见
            
            MyPanel mp=new MyPanel(); //实例化对象
            f.add(mp); //将mp添加到窗体
            
            Thread t=new Thread(mp); 
            t.start();
            
        
    
        }
    
    }
    import java.awt.Color;
    import java.awt.Graphics;
    import java.awt.Panel;
    
    public class MyPanel extends Panel implements Runnable{  //让MyPanel继承Panel,并且连接接口Runnable
        int x=150,y=0; //给小球设置起始坐标变量,并附初始值
        int flag=1;
    public void paint(Graphics g) {
        g.setColor(Color.BLUE);//设置小球的颜色
        
        g.fillOval(x, y, 20, 20);//设置小球的位置跟大小
        
    }
    
        
        @Override
        public void run() {
            while(true) {
                if(flag==1) {
                    x++;
                    y++;
                }
                if(flag==2) {
                    x--;
                    y++;
                }
                if(flag==3) {
                    x--;
                    y--;
                }
                if(flag==4) {
                    x++;
                    y--;
                }
                
                 if(x>150&&y>100){
                        if(flag==1) {
                            flag=2;
                        }
                        }
                    if(x<150&&y>100){
                        if(flag==2){
                        flag=3;
                        }
                    }
                    
                    if(x<0&&y<100){
                        if(flag==3){
                            flag=4;
                        }
                    }
                    
                    if(x>150&&y<0){
                        if(flag==4){
                            flag=1;
                        }
                    }
    try { Thread.sleep(15); }catch(Exception e) {} repaint(); } } }

    上面这个练习题自己做得感觉不太好,希望有大佬能够指点指点

  • 相关阅读:
    php 微信-支付宝APP支付(退款)参数获取
    宝塔面板下安装svn版本管理(Centos)
    获取上传文件浏览器路径
    PHP 自制简易其它网站调用密文加密解密
    获取嵌入的资源
    设计模式02(结构性设计模式)
    人为控制随机概率
    设计模式01(创建性设计模式)
    插件式开发
    使用Word2010直接编辑、发布博客→博客园cnblogs
  • 原文地址:https://www.cnblogs.com/Leia2/p/12019616.html
Copyright © 2011-2022 走看看