生命游戏-多线程

Posted 王六六同学

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了生命游戏-多线程相关的知识,希望对你有一定的参考价值。

289. 生命游戏

将生命游戏"demo进行重构,包括如下子任务:

1、将arr数组改造为GameOfLife类的成员变量,并在构造函数中对其初始化

2、countLivingNeighbors、 getNextVal upd ateNextState. printMatrix改造为GameOfLife的成员函数

3、尝试将该demo移植到独立线程下执行:每隔若干毫秒执行一次更新并打印提示:

import java.util.*;

// 必须定义 `ShowMeBug` 入口类和 `public static void main(String[] args)` 入口方法
public class ShowMeBug 
  public static void main(String[] args) 
    
    GameOfLife life = new GameOfLife(arr);
    Thread t = new Thread(life);
    while(true)
      t.sleep(1000);
      t.start();
    
    System.out.println("Hello World!");
  
  


class GameOfLife implements Runnable
  public final int[][] arr;
  public GameOfLife(int[][] arr)
    this.arr = arr;
  
  
  public void updateNextState(int[][] arr)
    int m = arr.length;
    int n = arr[0].length;
    
    for(int i=0;i<m;i++)
      for(int j=0;j<n;j++)
        arr[i][j] = getNextVal(arr,i,j);
      
    
  
  
  public int getNextVal(int[][] arr,int i,int j)
    countLivingNeighbors(arr,i,j);
  
  
  public int countLivingNeighbors(int[][] arr, int i,int j)
    .....
  
  
  public void printMatrix()
    for(int i=0;i<arr.length;i++)
      for(int j=0;j<arr[0].length;j++)
        System.out.println(arr[i][j] + " ");
      
      System.out.println();
    
  
  
  @Override
  public void run()
  	updateNextState(arr);
    printMatrix()



以上是关于生命游戏-多线程的主要内容,如果未能解决你的问题,请参考以下文章

C++Qt开发-单线程实现生命游戏

多线程的生命周期以及多线程的使用场景

Java 多线程系列2——多线程的生命周期及生产消费者模型

Java多线程与并发——线程生命周期和线程池

iOS多线程全套:线程生命周期,多线程的四种解决方案,线程安全问题,GCD的使用,NSOperation的使用

Java多线程并发02——线程的生命周期与常用方法