什么是线程以及线程的使用+示例

best 365官网体育投注 2026-01-30 10:42:34 admin 9144 607
什么是线程以及线程的使用+示例

目录

1、实现线程的三种方式

2、线程的运用

常用函数:

效果展示

以下是效果图,运用了窗体美化包

1、实现线程的三种方式 继承 Thread类,并重写run()方法;

实现 Runnable接口,并重写run()方法;

实现 Callable接口,并重写call()方法;

五大状态:新建、就绪、运行、阻塞、死亡;

2、线程的运用什么是线程?

程序中负责执行的哪个东东就叫做线程(执行路线,进程内部的执行序列),或者说是进程的子任务。

常用函数: sleep():设置线程休眠时间,单位毫秒;

yield():方法是停止当前线程,让同等优先权的线程运行,如果没有同等优先权的线程,那么Yield()方法将不会起作用。该方法与sleep()类似,只是不能由用户指定暂停多长时间,该方法执行后线程直接进入就绪状态。

join():执行后线程进入阻塞状态,例如在线程B中调用线程A的join(),那线程B会进入到阻塞队列,直到join结束或中断线程B才开始进入阻塞队列。

wait():让线程处于等待状态,并且释放掉抢到的锁旗标,其他线程可以继续抢锁旗标。wait()必须在同步的代码块中执行。

案例一:创四个方法,再进行调用,四个方法哪一个方法抢到了CPU就执行那个

代码语言:javascript复制package com.zking.ui;

public class Test {

public static void main(String[] args) {

//实例化线程对象

MyThread1 m1 = new MyThread1();

MyThread1 m2 = new MyThread1();

//m1.run();//错误的使用线程方法

//启用线程

m1.start();

m2.start();

//Runnable方式实现线程

//创建任务对象

MyRunnable m = new MyRunnable();

//创建线程

Thread t1 = new Thread(m);

t1.start();

}

}效果展示 案例二:(希望不会挨打)大多数人都喜欢玩游戏,玩游戏的时候会有抽奖,并且抽中的概率是很小的,以下是一个老虎机游戏

代码语言:javascript复制package com.zking.ui;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.util.Random;

import javax.swing.ImageIcon;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.UIManager;

public class Game_UI extends JFrame{

boolean b = true;

JPanel jp = new JPanel();

//第一张图

ImageIcon ia = new ImageIcon("D:\\S2\\丹哥\\API_07\\images\\a3.gif");

JLabel jla = new JLabel(ia);

// 第一张图

// ImageIcon ib = new ImageIcon("D:\\S2\\丹哥\\API_07\\images\3.gif");

JLabel jlb = new JLabel(ia);

// 第一张图

// ImageIcon ic = new ImageIcon("D:\\S2\\丹哥\\API_07\\images\3.gif");

JLabel jlc = new JLabel(ia);

//第一个按钮

JButton jbyyy = new JButton("摇一摇");

JButton jbtyt = new JButton("停一停");

public Game_UI() {

this.setTitle("老虎机");

this.setSize(420,350);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.setLocationRelativeTo(null);

// 设置空布局

jp.setLayout(null);

// 第一张图片的位置

jla.setBounds(60, 70, 64, 50);

// 添加到画布上

jp.add(jla);

// 第二张图片的位置

jlb.setBounds(170, 70, 64, 50);

// 添加到画布上

jp.add(jlb);

// 第三张图片的位置

jlc.setBounds(280, 70, 64, 50);

// 添加到画布上

jp.add(jlc);

jbyyy.setBounds(60, 180, 100, 40);

jp.add(jbyyy);

jbtyt.setBounds(220, 180, 100, 40);

jp.add(jbtyt);

jbyyy.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

// TODO Auto-generated method stub

b = true;

new Thread() {

int i = 500;

public void run() {

while(true) {

//随机1-4中间的一个数字

setJlImage(jla);

setJlImage(jlb);

setJlImage(jlc);

if(b) {

i-=50;

if(i<=1) {

i=1;

}

}else {

i+=10;

if(i>=500) {

break;

}

}

try {

Thread.sleep(i);

} catch (Exception e2) {

e2.printStackTrace();

}

}

};

}.start();

}

});

jbtyt.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

// TODO Auto-generated method stub

b = false;

}

});

this.getContentPane().add(jp);

this.setVisible(true);

}

private void setJlImage(JLabel jl) {

// TODO Auto-generated method stub

Random ran = new Random();

int i = ran.nextInt(4)+1;

//创建图片

ImageIcon ii = new ImageIcon("D:\\S2\\丹哥\\API_07\\images\\a" + i + ".gif");

jl.setIcon(ii);

}

public static void main(String[] args) {

try {

UIManager.setLookAndFeel("org.jb2011.lnf.beautyeye.BeautyEyeLookAndFeelCross");

} catch (Exception e) {

e.printStackTrace();

}

new Game_UI();

}

}以下是效果图,运用了窗体美化包以上就是今天的分享,谢谢大家的观赏!!!

相关推荐

梦幻西游药品 二级药品
365bet规则

梦幻西游药品 二级药品

10-06 680
细说汉字:夹
365娱乐app官方版下载

细说汉字:夹

10-03 617
魔兽世界11.2毁灭术套装效果一览
best 365官网体育投注

魔兽世界11.2毁灭术套装效果一览

10-09 506