当前位置: 首页 > news >正文

无忧企业网站管理系统附近机械零件加工厂

无忧企业网站管理系统,附近机械零件加工厂,大站wordpress,南京高端网站建设哪家好20.2创建线程 20.2.1继承Thread类 Thread类是Java.lang包中的一个类#xff0c;从这个类中实例化的对象代表线程#xff0c;程序员启动一个新线程需要建议Thread实例。 public class ThreadTest extedns Thread{} run方法格式#xff1a; public void run(){} 20.1让线程… 20.2创建线程 20.2.1继承Thread类 Thread类是Java.lang包中的一个类从这个类中实例化的对象代表线程程序员启动一个新线程需要建议Thread实例。 public class ThreadTest extedns Thread{} run方法格式 public void run(){} 20.1让线程循环打印1-10 package lx;public class Demo20_1 extends Thread {public void run(){for(int i0;i10;i) {System.out.println(i);}}public static void main(String[] args) {Demo20_1 thnew Demo20_1();th.start();}} 20.2.2实现Runnable类  public class Tread extends Object implements Runnable 20.2让窗口的图标移动 package lx;import java.awt.Container;import javax.swing.JFrame; import javax.swing.*;public class Demo20_2 extends JFrame {int c0;//图标横坐标public Demo20_2() {setBounds(300,200,250,100);//绝对定位窗体大小和位置Container congetContentPane();//主容器con.setLayout(null);//使窗体不使用任何布局管理器Icon imgnew ImageIcon(src/1.gif);//图标对象JLabel jlnew JLabel(img);//显示图标的标签jl.setBounds(10, 10, 200, 50);//设置标签的位置和大小Thread tnew Thread() {//定义匿名线程对象public void run() {while(true) {jl.setBounds(c, 10, 200, 50);//将标签的横坐标用线程表示try {Thread.sleep(500);//使线程休眠500毫秒}catch(InterruptedException e) {e.printStackTrace();}c4;//使横坐标每次增加4if(c120) {c10;//当图标到达标签最右边时使其回到标签最左边}}}};t.start();//启动线程con.add(jl);//将标签添加到容器中setVisible(true);//使窗体可见setDefaultCloseOperation(EXIT_ON_CLOSE);//设置窗体的关闭方式}public static void main(String[] args) {new Demo20_2();}} 20.3线程的生命周期  20.4操作线程的方法 20.4.1线程的休眠 sleep方法  该时间以毫秒为单位 try{ Thread.sleep(2000); }catch(InterruptedException e){ e.printStackTrace(); } 20.3每0.1秒绘制一条随机颜色的线条 package lx;import java.awt.Color; import java.awt.Graphics; import java.util.Random;import javax.swing.JFrame;public class Demo20_3 extends JFrame {private static Color[]color {//定义颜色数组Color.BLACK,Color.BLUE,Color.CYAN,Color.GREEN,Color.ORANGE,Color.YELLOW,Color.RED,Color.PINK,Color.LIGHT_GRAY};private static final Random randnew Random();//创建随机对象private static Color getC() {//获取随机颜色值的方法return color[rand.nextInt(color.length)];}public Demo20_3() {Thread tnew Thread(new Runnable() {//创建匿名线程对象int x70;//定义初始坐标int y50;public void run() {while(true) {//无限循环try {Thread.sleep(100);//线程休眠0.1秒}catch(InterruptedException e){e.printStackTrace();}Graphics g getGraphics();//获取组件绘图上下文对象g.setColor(getC());//设置绘图颜色g.drawLine(x, y, 200, y);//绘制直线并递增垂直坐标if(y100) {y50;}}}});t.start();//启动线程}public static void main(String[] args) {init(new Demo20_3(),300,100);}public static void init(JFrame f,int w,int h) {//初始化程序界面的方法f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);f.setSize(w, h);f.setVisible(true);} } 20.4.2线程的加入 当某个线程使用join方法加入另一个线程时另一个线程会等待该线程执行完毕后再继续执行。   package lx;import java.awt.BorderLayout;import javax.swing.*;public class Demo20_4 extends JFrame{private Thread A;//定义两个线程private Thread B;private JProgressBar Barnew JProgressBar();//定义两个进度条组件private JProgressBar Bar2new JProgressBar();public static void main(String[] args) {Demo20_4 Textnew Demo20_4();Text.setVisible(true);}public Demo20_4() {setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setBounds(200,200,200,100);getContentPane().add(Bar,BorderLayout.NORTH);//将进度条设置在窗体最北面getContentPane().add(Bar2,BorderLayout.SOUTH);//将进度条设置在窗体最南面Bar.setStringPainted(true);//设置进度条显示数字字符Bar2.setStringPainted(true);Anew Thread(new Runnable() {//使用匿名内部类形式初始化Thread实例int c0;public void run() {//重写润()方法while(true) {Bar.setValue(c);//设置进度条当前值try {Thread.sleep(100);//让A线程休眠100毫秒B.join();//让/B调用join()方法if(c30)//设置当A线程走到了30B线程才启动B.start();//启动B线程}catch(InterruptedException e) {e.printStackTrace();}}}});A.start();//启动A线程Bnew Thread(new Runnable() {int c0;public void run() {while(true) {Bar2.setValue(c);//设置进度条当前值try {Thread.sleep(100);//让B线程休眠100毫秒}catch(InterruptedException e) {e.printStackTrace();}if(c100)//当c变量增长为100时break; //跳出循环 }}});}} 20.4让进度条A等待进度条B 20.4.3线程的中断 现在提倡run()方法中使用无限循环的形式然后使用一个布尔型标记控制循环的停止。 package lk;import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener;import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JProgressBar;public class Demo20_5 extends JFrame{public Demo20_5(){JProgressBar Barnew JProgressBar();//创建进度条getContentPane().add(Bar,BorderLayout.NORTH);//将进度条设置在窗体最北面JButton bnew JButton(停止);getContentPane().add(b,BorderLayout.SOUTH);//将进度条设置在窗体最南面Bar.setStringPainted(true);//设置进度条显示数字字符Thread tnew Thread(new Runnable() {int c0;public void run() {while(true) {Bar.setValue(c);//设置进度条当前值try {Thread.sleep(100);//让A线程休眠100毫秒}catch(InterruptedException e) {//捕捉InterruptedException异常System.out.println(当前线程程序被中断);break;}}}});b.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {t.interrupt();//中断线程}});t.start();//启动线程}public static void init(JFrame frame,int w,int h) {frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setSize(w, h);frame.setVisible(true);}public static void main(String[] args) {init(new Demo20_5(),100,100);}} 20.5单机按钮停止进度条滚动 20.4.4线程的礼让 yield()方法使具有同样优先级的线程有进入可执行状态的机会在当前线程放弃执行权会再回到就绪状态。 20.5线程的优先级 每个线程都具有各自的优先级线程的优先级可以表明在程序中该线程的重要性如果有会让你多线程处于就绪状态系统会根据优先级来决定首先使用哪一个线程进入运行状态。 package lk;public class Demo20_6 implements Runnable{String name;public Demo20_6(String name) {this.namename;}public void run() {String tmp;for(int i0;i50000;i) {//完成5万次字符串拼接tmpi;}System.out.println(name线程完成任务);}public static void main(String[] args) {Thread anew Thread(new Demo20_6(A));//A线程优先级最小a.setPriority(1);Thread bnew Thread(new Demo20_6(B));b.setPriority(3);Thread cnew Thread(new Demo20_6(C));c.setPriority(7);Thread dnew Thread(new Demo20_6(D));//D线程优先级最大d.setPriority(10);a.start();b.start();c.start();d.start();//线程的执行顺序由CPU决定所有可能不一定按优先级排序}} 20.6观察不同优先级的线程执行完毕顺序 20.6线程同步 在单线程程序中每一次只能做一件事情后面的事情需要等待前面的事情完成后才可以进行但是如果使用多线程线程就会发生两个线程抢占资源问题。 20.6.1线程安全 20.6.2线程同步机制 1同步块 synchronized(Object){ } 2同步方法 synchronized void f(){} 20.7 package lk;public class Demo20_6_1 implements Runnable {int n10;//设置当前总票数public synchronized void du() {if(n0) {//判断当前票数是否大于 0try {Thread.sleep(100); //使当前线程休眠 100毫秒 }catch(InterruptedException e) {e.printStackTrace();}System.out.println(Thread.currentThread().getName()————票数n--);//票数减1} }public void run() {while(true) {//设置无限循环du();}}public static void main(String[] args) {Demo20_6_1 tnew Demo20_6_1();//实例化类对象Thread tAnew Thread(t,线程一);//以该类对象分别实例化 4 个线程Thread tBnew Thread(t,线程二);Thread tCnew Thread(t,线程三);Thread tDnew Thread(t,线程四);tA.start();//分别启动线程tB.start();tC.start();tD.start();}}
http://www.zqtcl.cn/news/734483/

相关文章:

  • 牙科医院网站开发内江市住房和城乡建设局网站电话号码
  • 网站建设的想法和意见芜湖的网站建设公司
  • 效果好的网站建设wordpress主题基础
  • html5建设摄影网站意义crm免费客户管理系统
  • win2008 建立网站网站策划书的撰写流程
  • 德泰诺网站建设百度网盘资源搜索引擎入口
  • 谁能给个网站谢谢wordpress 主题 后门
  • 学校网站建设目的seo教学免费课程霸屏
  • 会计公司网站模板微信网站如何制作软件
  • 烟台做网站多少钱.net网站做增删改
  • 什么网站专门做软件的深圳电商网站制作
  • 局域网做网站家装公司哪家比较好
  • 免费的行情软件网站在线使用wordpress视频分享
  • 内容平台策划书网站优化公司推荐
  • 怎么在阿里巴巴网站做公司wordpress伪静态404
  • 配置 tomcat 做网站网站建设用什么语言
  • 大型的营销型网站建设怎么选择网站建设公司
  • 怎么用网站源码建站友情链接交换方式有哪些
  • 国外免费网站服务器链接幼教网站建设分析
  • 做药品网站有哪些陕西专业网站建设价格
  • 网络公司做网站网站 服务器选择
  • 湖南省重点建设项目办公室网站河南省住建局官网
  • 建设网站企业网上银行登录入口官方论坛系统
  • 嘉定建设机械网站合肥制作网页设计
  • 外链网站有哪些空港经济区内的建设工程网站
  • 企业网站开发价阿里云快速备份网站
  • 大型电子商务网站建设成本ai网页生成
  • 网页播放视频 网站开发常用网站搜索引擎
  • 制作一个购物网站要多少钱做创意小视频的网站
  • 淇县网站建设软件定制流程