激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - java多線程編程實現下雪效果

java多線程編程實現下雪效果

2020-03-01 11:29hebedich JAVA教程

這篇文章主要介紹了java多線程編程實現下雪效果的相關資料,需要的朋友可以參考下

沒有直接采用繼承Thread類或者繼承Runnable的接口來實現多線程,而是使用了匿名內部類。

要導入的類:

?
1
2
import javax.swing.*;
import java.awt.*;

1.定義SowPanel類,繼承JPanel類,這個類有兩個整型數組成員,用來保存雪花起始位置。在構造函數中為數組賦初值;重寫父類的paint()方法;定義一個啟動多線程的startSnow()方法。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
class SnowPanel extends JPanel
{
  //定義整型數組,存儲雪花坐標
  private int[] x=new int[300];
  private int[] y=new int[300];
 
  public SnowPanel()
  {
    //設置背景為黑色
    setBackground(Color.black);
    //用隨機數初始化雪花坐標
    for(int i=0;i<x.length;i++)
    {
      x[i]=(int)(Math.random()*800);
      y[i]=(int)(Math.random()*600);
    }
  }
  
  public void paint(Graphics g)
  {
    //繼承父類畫的方法
    super.paint(g);
    //設置顏色為白色
    g.setColor(Color.white);
    //利用循環畫出多個雪花
    for(int i=0;i<x.length;i++)
    {
      g.drawString("*",x[i],y[i]);
    }
  }
  //定義一個方法啟動多線程,并使用匿名內部類
  public void startSnow()
  {
    new Thread()
    {
      public void run()
      {
        while(true)
        {
          for(int i=0;i<y.length;i++)
          {
            //坐標下移
            y[i]++;
            //檢查是否越界
            if(y[i]==600)
            y[i]=0;
            //重繪
            repaint();
          }
          
           try
           {
            Thread.sleep(10);
           }
             catch (InterruptedException e)
           {
            e.printStackTrace();
           }
        }
      }
    }.start();
  }
}

2.定義ShowFrame類,繼承Jframe 類。在構造方法中設置窗口的顯示屬性,并創建ShowPanel對象,添加到窗口中。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
class SnowPanel extends JPanel
{
  //定義整型數組,存儲雪花坐標
  private int[] x=new int[300];
  private int[] y=new int[300];
 
  public SnowPanel()
  {
    //設置背景為黑色
    setBackground(Color.black);
    //用隨機數初始化雪花坐標
    for(int i=0;i<x.length;i++)
    {
      x[i]=(int)(Math.random()*800);
      y[i]=(int)(Math.random()*600);
    }
  }
  
  public void paint(Graphics g)
  {
    //繼承父類畫的方法
    super.paint(g);
    //設置顏色為白色
    g.setColor(Color.white);
    //利用循環畫出多個雪花
    for(int i=0;i<x.length;i++)
    {
      g.drawString("*",x[i],y[i]);
    }
  }
  //定義一個方法啟動多線程,并使用匿名內部類
  public void startSnow()
  {
    new Thread()
    {
      public void run()
      {
        while(true)
        {
          for(int i=0;i<y.length;i++)
          {
            //坐標下移
            y[i]++;
            //檢查是否越界
            if(y[i]==600)
            y[i]=0;
            //重繪
            repaint();
          }
          
          try
          {
            Thread.sleep(10);
          }
            catch (InterruptedException e)
          {
            e.printStackTrace();
          }
        }
      }
    }.start();
  }
}

3.運行效果圖片(此為靜態圖):

java多線程編程實現下雪效果

疑問:發現其他的不改變,繼承Frame、Panel和繼承JFrame、Jpanel的運行效果是不同的,前者顯示的下雪場景總是有閃爍的感覺;后者則沒有閃爍,個人感覺后者效果更好些。

接下來我們來看個例子

這里我們做一個完整的例子來說明線程產生的方式不同而生成的線程的區別:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
package debug;
 
import java.io.*;
import java.lang.Thread;
 
 
class MyThread extends Thread{
 public int x = 0;
 
 public void run(){
  System.out.println(++x);
 }
}
 
class R implements Runnable{
 private int x = 0;
 public void run(){
  System.out.println(++x);
 }
}
 
public class Test {
 public static void main(String[] args) throws Exception{
  
  for(int i=0;i<10;i++){
   Thread t = new MyThread();
   t.start();
  }
  Thread.sleep(10000);//讓上面的線程運行完成
  R r = new R();
  for(int i=0;i<10;i++){
   Thread t = new Thread(r);
   t.start();
  }
 }
}

  上面10個線程對象產生的10個線程運行時打印了10次1。下面10個線程對象產生的10個線程運行時打印了1到10。我們把下面的10個線程稱為同一實例(Runnable實例)的多個線程。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 久久国产免费视频 | 国产精品久久久久久久av | 日韩毛片免费观看 | 欧美一级美国一级 | 日日狠狠久久偷偷四色综合免费 | 青草伊人网 | 射逼网站| 羞羞视频在线免费 | 亚洲国产高清自拍 | 黄色av网站免费 | 综合国产在线 | 亚洲国产精品高潮呻吟久久 | 亚洲午夜一区二区三区 | 一级黄色毛片播放 | 黄色大片免费看 | 国产一级免费在线视频 | 免费黄色欧美视频 | 深夜福利视频免费观看 | 亚洲国产资源 | 青青草成人影视 | 久久综合九色 | 伊人网站 | 日本免费靠逼视频 | www.99久久久 | 久久精品欧美一区二区三区不卡 | 一本色道久久99精品综合蜜臀 | 成年人国产视频 | 国产亚洲精品久久久久婷婷瑜伽 | 免费a级网站 | 欧美国产成人在线 | 91精品国产九九九久久久亚洲 | 日韩欧美精品中文字幕 | 成人片免费视频 | 一区二区三区黄色 | 依依成人精品视频 | www.狠狠插.com| 一级免费看片 | 中文字幕在线永久视频 | 久草视频在线资源 | 中文在线观看视频 | 毛片在线免费观看视频 |