package com.rgy.Test;

import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.WindowConstants; public class Test3 extends JFrame{
//加入属性
//
private JPanel panel[];
private JTextField tf[];
private JLabel label_sleep[];
private JTextField tf_sleep[];
private JButton button_start[];
private JButton button_interrupt[];
private JLabel label_state[];
private JTextField tf_state[];
private MyThread_0 thread_0;
private MyThread_1 thread_1;
private MyThread_2 thread_2;
//
private String texts[]={"Welcome","Hello","Rolly"};
//
private int sleeptime0;
private int sleeptime1;
private int sleeptime2;
public Test3(String str){
super(str);
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
this.setBounds(500, 250, 500, 320);
//加入功能代码
this.setLayout(new GridLayout(6,1));
tf=new JTextField[3];
panel=new JPanel[3];
label_sleep=new JLabel[3];
tf_sleep=new JTextField[3];
button_start=new JButton[3];
button_interrupt=new JButton[3];
label_state=new JLabel[3];
tf_state=new JTextField[3];
//
for(int i=0;i<3;i++){
panel[i]=new JPanel();
tf[i]=new JTextField(String.format("%160s", texts[i]));
tf[i].setHorizontalAlignment(JTextField.RIGHT);
//
label_sleep[i]=new JLabel("sleep");
tf_sleep[i]=new JTextField(10);
button_start[i]=new JButton("启动");
button_interrupt[i]=new JButton("中断");
label_state[i]=new JLabel("state");
tf_state[i]=new JTextField(14);
tf_state[i].setEditable(false);
//
panel[i].add(label_sleep[i]);
panel[i].add(tf_sleep[i]);
panel[i].add(button_start[i]);
panel[i].add(button_interrupt[i]);
panel[i].add(label_state[i]);
panel[i].add(tf_state[i]);
button_start[i].addActionListener(new button_handler());
button_interrupt[i].addActionListener(new button_handler());
this.add(tf[i]);
this.add(panel[i]);
}
//
this.pack();
this.setVisible(true);
} class MyThread_0 extends Thread{
public void run(){
while(true){
try {
String str=tf[0].getText();
tf[0].setText(str.substring(1)+str.substring(0,1));
sleep(sleeptime0);
} catch (Exception e) {
break;
}
}
}
} class MyThread_1 extends Thread{
public void run(){
while(true){
try {
String str=tf[1].getText();
tf[1].setText(str.substring(1)+str.substring(0,1));
sleep(sleeptime1);
} catch (Exception e) {
break;
}
}
}
} class MyThread_2 extends Thread{
public void run(){
while(true){
try {
String str=tf[2].getText();
tf[2].setText(str.substring(1)+str.substring(0,1));
sleep(sleeptime2);
} catch (Exception e) {
break;
}
}
}
} class button_handler implements ActionListener{
public void actionPerformed(ActionEvent e) {
if(e.getSource()==button_start[0]){
sleeptime0=Integer.parseInt(tf_sleep[0].getText());
thread_0=new MyThread_0();
thread_0.start();
button_start[0].setEnabled(false);
button_interrupt[0].setEnabled(true);
tf_state[0].setText(""+thread_0.getState());
}
if(e.getSource()==button_interrupt[0]){
thread_0.interrupt();
button_start[0].setEnabled(true);
button_interrupt[0].setEnabled(false);
tf_state[0].setText(""+thread_0.getState());
}
if(e.getSource()==button_start[1]){
sleeptime1=Integer.parseInt(tf_sleep[1].getText());
thread_1=new MyThread_1();
thread_1.start();
button_start[1].setEnabled(false);
button_interrupt[1].setEnabled(true);
tf_state[1].setText(""+thread_1.getState());
}
if(e.getSource()==button_interrupt[1]){
thread_1.interrupt();
button_start[1].setEnabled(true);
button_interrupt[1].setEnabled(false);
tf_state[1].setText(""+thread_1.getState());
}
if(e.getSource()==button_start[2]){
sleeptime2=Integer.parseInt(tf_sleep[2].getText());
thread_2=new MyThread_2();
thread_2.start();
button_start[2].setEnabled(false);
button_interrupt[2].setEnabled(true);
tf_state[2].setText(""+thread_2.getState());
}
if(e.getSource()==button_interrupt[2]){
thread_2.interrupt();
button_start[2].setEnabled(true);
button_interrupt[2].setEnabled(false);
tf_state[2].setText(""+thread_2.getState());
}
}
} public static void main(String args[]) {
new Test3("滚动字");
}
}

java多线程实验 滚动字的更多相关文章

  1. Java多线程编程核心技术(二)对象及变量的并发访问

    本文主要介绍Java多线程中的同步,也就是如何在Java语言中写出线程安全的程序,如何在Java语言中解决非线程安全的相关问题.阅读本文应该着重掌握如下技术点: synchronized对象监视器为O ...

  2. Java多线程编程那些事:volatile解惑--转

    http://www.infoq.com/cn/articles/java-multi-thread-volatile/ 1. 前言 volatile关键字可能是Java开发人员“熟悉而又陌生”的一个 ...

  3. Java多线程编程核心技术---对象及变量的并发访问(二)

    数据类型String的常量池特性 在JVM中具有String常量池缓存的功能. public class Service { public static void print(String str){ ...

  4. Java多线程详解

    Java线程:概念与原理 一.操作系统中线程和进程的概念 现在的操作系统是多任务操作系统.多线程是实现多任务的一种方式. 进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程 ...

  5. java多线程系列(二)

    对象变量的并发访问 前言:本系列将从零开始讲解java多线程相关的技术,内容参考于<java多线程核心技术>与<java并发编程实战>等相关资料,希望站在巨人的肩膀上,再通过我 ...

  6. Java多线程编程核心技术

    Java多线程编程核心技术 这本书有利于对Java多线程API的理解,但不容易从中总结规律. JDK文档 1. Thread类 部分源码: public class Thread implements ...

  7. java多线程(一)-概述

    最近这段在看java多线程编程方面的东西.所以特写了几篇文章,来总结和回顾一下自己所学习到的相关知识.因为水平有限,文章中总结不全面甚至理解错误的地方,欢迎读者指点批评. 我们平时所接触到的程序,都是 ...

  8. 初识Java多线程编程

    Java 多线程编程 Java给多线程编程提供了内置的支持.一个多线程程序包含两个或多个能并发运行的部分.程序的每一部分都称作一个线程,并且每个线程定义了一个独立的执行路径. 多线程是多任务的一种特别 ...

  9. JAVA 多线程(3)

    再讲线程安全: 一.脏读 脏读:在于读字,意在在读取实例变量时,实例变量有可能被另外一个线程更改了,导致获取到的数据出现异常. 在非线程安全的情况下,如果线程A与线程B 共同使用对象实例C中的方法me ...

随机推荐

  1. java web下串口通讯

       最近在做java串口通讯,主要是用个人电脑通过串口从RS485读取数据,并通过crc循环冗余校验,把接收正确的数据解析,插入数据库mysql,并用SSH技术把数据库数据以表格以及图表形式显示   ...

  2. 批量上传插件(flash,html5,jquery)

    1.jQuery File Upload 官网:http://blueimp.github.com/jQuery-File-Upload/ 在线示例:http://blueimp.github.com ...

  3. java程序员认证考试题库

    第一部分 基础知识练习 目标 本章对应于<学生指南>各章的内容分别提供了练习题集,包括: ●  第一章Java入门 ●  第二章数据类型和运算符 ●  第三章流程控制与数组 ●  第四章封 ...

  4. MVC MVP MVVM 图解

    1.MVC (1)图解 解释: 视图(View):用户界面. 控制器(Controller):业务逻辑 模型(Model):数据保存 各部分之间的通信方式如下: View 传送指令到 Controll ...

  5. html5之canvas画图 1.写字板功能

     写字板事例:       写字板分析:1.点击鼠标開始写字(onmosedown)2.按下鼠标写字(onmousemove)3.松开鼠标,停下写字(撤销onmousemove事件):       代 ...

  6. css中clear属性的认识

    今天在看博客园的页面布局时发现有不少空白的div只有css属性:clear:both. 然后去W3C文档里和百度补脑了一下,总结如下: 这是之前我写的一段测试代码: <div style=&qu ...

  7. python之函数用法setattr(),了解即可

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #python之函数用法setattr(),了解即可 #http://www.cnblogs.com/hong ...

  8. Word基础总结

    Word文本的操作 一.文 ◎Backspace(退格键) 删除光标以左的内容    ◎Delete (删除键)    删除光标以右的内容     #实话之前一直没在意,一直用backspace删除 ...

  9. TP3.2:实现Ajax无刷新上传图片

    1.基于TP3.2+ajaxfileupload进行无刷新上传图片,本次只上传一张,多张以后搞出来再发 2.效果:   3.html代码: <html> <head> < ...

  10. 【微信小程序】:实现轮播图3秒滚动

    wxml模板:(数据一维数组) <scroll-view scroll-y="true"> <swiper autoplay="auto" i ...