简单的java游戏编程代码_java游戏编程(1)线程
1.在java中只要生成线程并启动即可。实现代码如下:
Thread myThread=new Thread();
myThread.start();
当生成线程后就要调用Thread的 run()方法。但其实它什么也不干,如果想让run()方法干点事,有三种基本方法。
(1)扩展Thread类
对线程指定任务的第一个方法就是扩展Thread类,覆盖其中的run()方法。
例子:public class myThread extends Thread{
public void run(){
{ System.out.println("Do something cool here");
}
}
myThread thread=new myThread();
thread.start();
(2)实现Runnable接口
扩展Thread类很简单但是不会为了启动线程而写一个新类的,必定实现类扩展也需要运行一个线程来操作。下面是实现Runnable()接口来对线程指定任务。实现代码如下:
public class MyClass extends SomeOtherClass implements Runnable{
public MyClass(){
Thread thread=new Thread(this);
Thread.start();
}
public void run(){
System.out.println("Do something cool here");
}
}
代码中MyClass的构造函数启动一个新线程,而Thread类的构造函数会引用一个Runnable对象作为参数,这个
Runnable对象就是启动线程执行的任务。
(3)使用匿名内类
假如不能生成新类或不便实现Runnable接口,那么就可以使用匿名内类来对线程指定任务,实现代码如下:
new Thread(){
public void run(){
System.out.println("Do something cool here");
}
}.start();
2.等待线程完成
若让当前线程去等待另一个线程,则可以使用join()方法,实现如下:
myThread.join();
join()方法应用于玩家退出游戏时,它可以保证在游戏中所有的线程运行完后,再进行最后清理工作。
线程休眠:Thread.sleep(1000);
3.线程同步
通过关键字synchronized来实现同步问题。实现方法进行同步,则一次只能运行一个方法。
例子:
public class Maze{
private int playerX;
private int playerY;
public synchronized boolean isAtExit(){
return(playerX==0&&playerY==0);
}
public synchronized void setPositon(int x,int y){
playerX=x;
playerY=y;
}
}
除了将方法同步之外,还具有将对象同步。例如以上代码可以如下:
public synchronized class Maze{
private int playerX;
private int playerY;
public void boolean isAtExit(){
isAtExit(this){
return (playerX==0 &&playerY==0);
}
}
public void setPosition(int x,int y){
setPosition(this){
playerX=x;
playerY=y;
}
}
4.使用wait()与notify()
假设两个线程需要交互交流信息,设线程A 等待线程B发一个消息,实现代码如下:
//Thread A
public void waitForMessage(){
while(hasMessage==false){
Thread.sleep(100);
}
}
//Thread B
public void setMessage(String message){
.......
hasMessage=true;
}
虽然方案可行,但是非常苯,因为线程A每100毫秒就要检查线程B是否发送消息。若线程A睡过头,将可能太迟得到消息。另外几个线程等一个消息呢?
更好的方法是线程A保持闲机,在线程B发消息时通知线程A。wait()和notify()方法提供了这个功能。
下面是线程A等待线程B发送一个消息的代码;
//Thread A
public synchronized void waitForMessage(){
try{ wait();
}
catch(InterruptedException ex){}
}
//Thread B
public synchronized void setMessage(string message){
......
notify();
}
可以看出,线程B调用notify()方法并离开同步方法后(释放this锁)。线程A取得锁并完成同步代码快。
如果线程一直未收到通知,则等于让线程休息指定时间量,但是无法判断线程是超时返回还是收到了通知。另一个方法notify(),它通知等待同一锁的所有线程。
java的线程:所有图形应用程序都有至少两个运行代码的线程,主线程和AWT事件派生线程。
主线程就是程序的"主"线程,他用程序主类的main()方法开始执行。AWT事件派生线程处理用户输入事件,如鼠标单击,键击和窗口缩放等。下面列举一些需要使用线程的情形:从本地文件系统中装入大量文件
进行任何网络通信时,如将高分成绩发送到服务器中;进行任何海量计算时,如生成地形。
简单的java游戏编程代码_java游戏编程(1)线程相关推荐
- java服务端代码_Java Socket编程服务器响应客户端实例代码
通过输入流来读取客户端信息,相应的时候通过输出流来实现. 服务端类的代码: import java.io.BufferedReader; import java.io.IOException; imp ...
- java2d游戏代码_JAVA游戏编程学习笔记(三)Java 2D游戏底层绘图框架
前二篇记录了java如何绘制图形与动画,今天打算总结复习一下,把这些知识点集合起来,制作一个Java2D小游戏框架(暂且这么叫,好像挺牛逼似的!). Java AWT 下边提供一个 class Can ...
- java语言简单代码_java语言编程如何实现一个最简单程序?
在编程语言中,实践出结果是最重要的,其他的什么都是为此做准备,下面我们就来看看该如何编译一个最简单的java程序. 首先,启动你的编程软件,如eclipse等,具体可以网上了解, 再来,创建一个新的j ...
- java贪吃蛇代码_java实现贪吃蛇游戏代码(附完整源码)
先给大家分享源码,喜欢的朋友点此处下载. 游戏界面 GUI界面 java实现贪吃蛇游戏需要创建一个桌面窗口出来,此时就需要使用java中的swing控件 创建一个新窗口 JFrame frame = ...
- java游戏服务端_JAVA游戏服务端的速度比得上c++吗?
看你要做什么游戏 有一类游戏叫益智休闲类游戏,就是用php做服务器都没问题,何况java 现在热门的吃鸡类游戏,官方钦定UE4,UE4自带服务器,跟客户端一样是C++ 另外就是各类mmo游戏,这类游戏 ...
- java运用网络编程技术代码_Java 网络编程
java网络编程 1.什么叫计算机网络? 由不同地理位置的不同计算机主机,连接起来组成的网络. 2.什么叫网络编程? 在网络的基础上,使用网络进行编程,对应用层进行设计的活动. 3.网络编程三要素:I ...
- java并发编程实践_Java并发编程实践如何正确使用Unsafe
一.前言 Java 并发编程实践中的话: 编写正确的程序并不容易,而编写正常的并发程序就更难了.相比于顺序执行的情况,多线程的线程安全问题是微妙而且出乎意料的,因为在没有进行适当同步的情况下多线程中各 ...
- Java并发基础总结_Java并发编程笔记之基础总结(二)
一.线程中断 Java 中线程中断是一种线程间协作模式,通过设置线程的中断标志并不能直接终止该线程的执行,而是需要被中断的线程根据中断状态自行处理. 1.void interrupt() 方法:中断线 ...
- java并发数据共享机制_Java并发编程:核心理论之数据共享性
原标题:Java并发编程:核心理论之数据共享性 并发编程是Java程序员最重要的技能之一,也是最难掌握的一种技能.它要求编程者对计算机最底层的运作原理有深刻的理解,同时要求编程者逻辑清晰.思维缜密,这 ...
- java并发编程介绍_java并发编程《一》介绍
1,并发的简短历史 1,OS的发展使多个程序同时运行,程序在各自的进程(process)中运行:相互分离,各自独立执行,有OS来分配资源,比如内存,文字句柄,安全证书.如果有需要的话,进程会通过一些原 ...
最新文章
- 别在迷恋正则表达式解析html了,好吗?
- java中的静态初始化是什么意思,Java中static静态变量的初始化完全解析
- java batch_Java EE 7 Batch中传递属性/参数的2种方式
- /dev/fb0入门练习
- 封条格式用word怎么打_标书密封条格式全word.doc
- 域环境下文件服务器,域和文件服务器
- C++中动态定义一维数组,二维数组,三维数组的方法
- 【Flink】 Flink 应用资源分配问题排查思路
- Android开源框架Afinal第一篇——揭开圣女的面纱
- Mariadb----字符类型 (五)
- 下载文件HTTP请求及处理过程
- 黑莓7290无信号问题
- 名利双收的公益创业,“汇新杯”响应时代召唤助力公益创业
- mt4双线macd_手机版MT4双线MACD设置视频教程
- 商旅信用卡(多重继承)
- 怎样使用计算机操作,鼠标操作怎么用?电脑鼠标操作图文教程
- ev4视频转换为mp4工具使用教程
- 2022卡塔尔世界杯来了,谁是你心中的夺冠热门球队?
- loaderrunner11.00安装与破解
- python 英语分词是什么意思_英语里面现在分词是什么意思