线程
一:什么是线程?
线程是通过利用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(); } } }
上面这个练习题自己做得感觉不太好,希望有大佬能够指点指点