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

公司架设网站费用怎么做分录linux网站开发软件

公司架设网站费用怎么做分录,linux网站开发软件,极速网站建设,wordpress柒主题创建线程 继承Thread 类 Thread 类时 java.lang 包中的一个类#xff0c;从类中实例化的对象代表线程#xff0c;程序员启动一个新线程需要建立 Thread 实例。 Thread 对象需要一个任务来执行#xff0c;任务是指线程在启动时执行的工作#xff0c;start() 方法启动线程从类中实例化的对象代表线程程序员启动一个新线程需要建立 Thread 实例。 Thread 对象需要一个任务来执行任务是指线程在启动时执行的工作start() 方法启动线程该工作的功能被写在run() 方法中。 例让线程循环打印1~10的数字 代码 public class ThreadTest extends Thread{public void run() {for(int i0;i10;i) {System.out.print(i );}}public static void main(String[] args) {ThreadTest tnew ThreadTest();t.start();} } 结果  实现 Runnable 接口 线程都是通过扩展 Thread 类来创建的如果程序员需要继承其他类非Thread 类而且还要是当前类实现多线程那么可以通过  Runnable 接口来实现。 实现 Runnable 接口的程序会创建一个 Thread 对象并将 Runnable 对象与 Thread 对象相关联。 使用 Runnable 接口启动新的线程的步骤 1建立 Runnable 对象    2使用参数为 Runnable 对象的构造方法创建 Thread 实例    3调用 start() 方法启动线程 例让窗体的图标动起来 import java.awt.Container;import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JLabel;public class SwingAndThread extends JFrame{int count0;//图标坐标public SwingAndThread(){setBounds(300,200,250,100);//绝对定位窗体大小与位置Container cotainergetContentPane();//主容器cotainer.setLayout(null);//使窗体不使用任何布局管理器Icon iconnew ImageIcon(1.gif);//图标对象JLabel jlnew JLabel(icon);//显示图标的标签jl.setBounds(10,10,200,50);//设置标签的位置与大小Thread tnew Thread() {//定义匿名线程对象public void run() { while(true) {jl.setBounds(count,10,200,50);//将标签的横坐标用变量表示try {Thread.sleep(500);//使线程休眠500毫秒}catch(InterruptedException e) {e.printStackTrace();}count4;//使横坐标每次增加4if(count120) {count10;//当图标到达标签的最右时时其回到标签做左边}}}};t.start();//启动线程cotainer.add(jl);//将标签添加到容器中setVisible(true);//使窗体可见setDefaultCloseOperation(EXIT_ON_CLOSE);//设置窗体的关闭方式}public static void main(String[] args) {new SwingAndThread();} } 结果 线程的生命周期 一旦线程进入可执行状态它会在就绪与运行状态下转换同时也有可能进入等待休眠赌塞或死亡状态。 要使线程处于就绪有以下几种方法 调用 sleep() 方法。 调用 wait() 方法。 等待输入/输出完成。 当线程处于就绪状态后可以用以下几种方法使线程再次进入运行状态 线程调用 notify() 方法。 线程调用 notifyAll() 方法。 线程调用 interrupt() 方法。 线程的休眠时间结束。 输入/输出结束。 操作线程的方法 线程的休眠 一种能控制线程行为的方法是调用 sleep() 方法需要一个参数用于指定该线程休眠的时间该时间以毫秒为单位。 例每0.1秒绘制一条随机颜色的线条 import java.awt.Color; import java.awt.Graphics; import java.util.Random;import javax.swing.JFrame;public class SleepMethodTest extends JFrame{private static Color[] color {Color.BLACK,Color.BLUE,Color.CYAN,Color.GREEN,Color.RED,Color.ORANGE,Color.YELLOW,Color.PINK,Color.LIGHT_GRAY};//定义颜色数组private static final Random randnew Random();//创建随机对象private static Color getC() {//获取随机颜色值的方法return color[rand.nextInt(color.length)];}public SleepMethodTest(){Thread tnew Thread(new Runnable() {//创建匿名线程对象int x30;//定义初始坐标int y50;public void run() {while(true) {//无限循环try {Thread.sleep(100);//线程休眠0.1秒}catch(InterruptedException e) {e.printStackTrace();}Graphics graphicsgetGraphics();//获取组件绘图上下文对象graphics.setColor(getC());//设置绘图颜色graphics.drawLine(x, y,150, y);//绘制直线并递增垂直坐标if(y180) {y50;}}}});t.start();//启动线程}public static void main(String[] args) {init(new SleepMethodTest(),200,200);}public static void init(JFrame frame,int width,int height) {//初始化程序界面的方法frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setSize(width, height);frame.setVisible(true);} } 结果  线程的加入 当某个线程使用 join() 方法的加入一个线程时另外一个线程会等待该线程执行完毕后再继续执行。 例让进度条A等待进度条B import java.awt.BorderLayout;import javax.swing.JFrame; import javax.swing.JProgressBar;public class JoinTest extends JFrame{//定义两个线程private Thread threadA;private Thread threadB;//定义两个进度条组件private JProgressBar porgressBarnew JProgressBar();private JProgressBar porgressBar2new JProgressBar();public static void main(String[] args) {JoinTest testnew JoinTest();test.setVisible(true);}public JoinTest() {setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setBounds(200,200,200,100);getContentPane().add(porgressBar,BorderLayout.NORTH);//将进度条设置在窗体最北面getContentPane().add(porgressBar2,BorderLayout.SOUTH);//将进度条设置在窗体最南面//设置进度条显示数字字符porgressBar.setStringPainted(true);porgressBar2.setStringPainted(true);//使用匿名内部类形式初始化 Thread 实例threadAnew Thread(new Runnable() {int count0;public void run() {//重写 run()方法while(true) {porgressBar.setValue(count);//设置进度条的当前值try {Thread.sleep(100);//使线程A休眠100毫秒threadB.join();//使线程B调用join()方法}catch(InterruptedException e) {e.printStackTrace();}}}});threadA.start();//启动线程AthreadBnew Thread(new Runnable() {int count0;public void run() {while(true) {porgressBar2.setValue(count);//设置进度条的当前值try {Thread.sleep(100);//使线程休眠100毫秒}catch(InterruptedException e) {e.printStackTrace();}if(count100)//当count变量增长为100时break;//跳出循环}}});threadB.start();//启动线程B}} 结果 线程的中断 以往有时候会使用 stop() 方法停止线程但当前版本的 JDK 早已废除了 stop() 方法不建议使用 stop() 方法来停止一个线程的运行。现在提倡在 run() 方法中使用无限循环的形式然后使用一个布尔型标记控制循环的停止。 如果线程是因为使用了 sleep()或 wait()方法进入了就入就绪状态可以使用 Thread()方法同时程序破除了 InterruptedException 异常在异常处理时结束了 while 循环。在项目中经常在这里执行关闭数据连接和关闭 Socket 连接等操作。 例单机按钮停止进度条滚动 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 InterruptedSwing extends JFrame{public InterruptedSwing (){JProgressBar porgressBarnew JProgressBar();//创建进度条getContentPane().add(porgressBar,BorderLayout.NORTH);//将进度条设置在窗体最北面JButton buttonnew JButton(停止);getContentPane().add(button,BorderLayout.SOUTH);//将进度条设置在窗体最北面//设置进度条显示数字字符porgressBar.setStringPainted(true);//使用匿名内部类形式初始化 Thread 实例Thread tnew Thread(new Runnable() {int count0;public void run() {//重写 run()方法while(true) {porgressBar.setValue(count);//设置进度条的当前值try {Thread.sleep(100);//使线程休眠100毫秒}catch(InterruptedException e) {//捕捉InterruptedException异常System.out.println(但前线程被中断);break;}}}});button.addActionListener(new ActionListener() {Overridepublic void actionPerformed(ActionEvent e) {t.interrupt();//中断线程}});t.start();//启动线程}public static void init(JFrame frame,int width,int height) {//初始化程序界面的方法frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setSize(width, height);frame.setVisible(true);}public static void main(String[] args) {init(new InterruptedSwing(),100,100);} } 结果  线程的礼让 Thread 类提供了一种礼让方法使用 yied()方法表示它只是给当前正处于运行状态的线程一个提醒告知它可以将资源礼让给其他线程但这仅是一种暗示没有任何一种机制保证当前线程会将资源礼让。 yied()方法使具有同样优先级的线程有进入可执行状态的机会在当前线程放弃执行权时再度回到就绪状态。对于支持多任务的操作系统来说不需要调用 yied()方法因为操作系统会为线程自动分配 CPU 时间来执行。 线程的优先级 每个线程都具有各自的优先级线程的优先级可以表明在程序中该线程的重要性如果有很多线程处于就绪状态系统会根据优先级来决定首先使哪个线程进入运行状态。但这并不意味着低优先级的线程得不到运行而只是它运行的概率比较小如垃圾回收线程的优先级就按照较低。 线程的优先级可以使用 setPriority()方法调整如果使用该方法设置的优先级不在 1~10将产生IllegalArgumentException 异常。 例观察不同优先级的线程执行完毕顺序 public class PriorityTest implements Runnable{String name;public PriorityTest(String name) {this.namename;}Overridepublic void run() {String tmp;for(int i0;i5000;i) {tmpi;//完成5万次字符串拼接}System.out.println(name线程完车任务);}public static void main(String[] args) {Thread anew Thread(new PriorityTest(A));a.setPriority(1);//A线程优先级最小Thread bnew Thread(new PriorityTest(B));b.setPriority(3);Thread cnew Thread(new PriorityTest(C));c.setPriority(7);Thread dnew Thread(new PriorityTest(D));d.setPriority(10);//D线程优先级最大a.start();b.start();c.start();d.start();} } 结果  线程同步 在单线程程序中每次只能做一件事情后面的事情需要等待前面的事情完成后才可以进行但是如果使用多线程程序就会发生两个线程抢占资源的问题如两个人同事说话、两个人同时过同一个独木桥。所以在多线程编程中需要防止这些资源访问的冲突。Java 提供了线程同步的机制来防止资源访问的冲突。 线程的安全 在编写多线程时时因该考虑到线程安全问题。实质上线程问题来源两个线程同时存取单一对象的数据。 例实现 Runnable 接口在未考虑到线程安全问题的基础上模拟火车站售票系统的功能 public class ThreadSafeTest implements Runnable{int num10;//设置当前总票数public void run() {while(true) { //设置无限循环if(num0) {//判断当前票数是否大于0try {Thread.sleep(100);//使当前线程休眠100毫秒}catch(InterruptedException e) {e.printStackTrace();}System.out.println(Thread.currentThread().getName()---票数num--);//票数减一}}}public static void main(String[] args) {ThreadSafeTest tnew ThreadSafeTest();//实例化类对象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();}} 结果  线程同步机制 所以解决多线程资源问题的方法基本上都是采用给定时间只允许一个线程访问共享资源的方法。这时就需要给共享源上一道锁。 1、同步块 Java中提供了同步机制可以有效地防止资源冲突。同步机制使用 synchronized 关键字使用该关键字包含的代码块称为同步块也称临界区语法如下 synchronized(Object){ } 代码 public class ThreadSafeTest implements Runnable{int num 10;// 设置当前总票数Overridepublic void run() {while(true) {synchronized(this) {if (num 0) { // 判断当前票数是否大于0try{Thread.sleep(100); // 使当前线程休眠100毫秒} catch (InterruptedException e) {e.fillInStackTrace();}//票数减1System.out.println(Thread.currentThread().getName() ---票数 num--);}}} } public static void main(String[] args) {//实例化类对象ThreadSafeTest tnew ThreadSafeTest();//以该类对象分别实例化4个线程Thread tA new Thread(t,线程一);Thread tB new Thread(t,线程二);Thread tC new Thread(t,线程三);Thread tD new Thread(t,线程四);tA.start();//分别启动线程tB.start();tC.start();tD.start(); } } 运行结果 2、同步方法 同步方法就是在方法前面用 synchronized 关键字修饰的方法语法如下 synchronized void f(){ } 当某个对象调用了同步方法时该对象上的其他同步方法必须等待该同步方法执行完毕后才能被执行。必须将每个能访问共享资源的方法修饰为 synchronized否则就会报错。
http://www.zqtcl.cn/news/969234/

相关文章:

  • 乡镇医院网站建设成都市企业网站建设
  • 网站编辑如何做原创网站中英切换实例
  • 哈尔滨道外区建设局官方网站wordpress简称
  • 教师网站建设企业实践总结华为应用商店下载安装
  • 常见的网站空间服务商资阳建设局网站
  • 惠通网站建设湖南seo优化服务
  • 网站建设价格标准wordpress花钱吗
  • 龙门惠州网站建设苏州公司注册查询
  • 城阳网站设计自建网站与平台建站
  • 网站建设文字教程wordpress xml生成
  • wordpress修改注册表广西seo网站
  • 新兴网站建设招商网站建设多少钱
  • 商城网站页面模板网页设计的首页如何设计官网
  • 我的世界做外国壁纸网站嘉兴推广公司
  • 网站制作在哪里找怎样上传wordpress模板
  • 网站设计时尚博业建站网
  • 网站建设前期如何规划免费的源代码分享有哪些网站
  • 长春网络培训seo
  • 江苏网站开发建设电话公司网站需求说明书
  • 河北建设厅网站首页个人或主题网站建设实验体会
  • 网站后台文章栏目做外汇消息面的网站
  • 白酒营销网站用asp.net做简易网站
  • 做seo需要建网站吗上传PDF到wordpress网站
  • 湘潭网站网站建设龙岩网站建设馨烨
  • 本地网站建设教程xampperp软件是什么意思啊
  • 网站没有流量房地产广告设计网站
  • 北京学网站开发企业官网设计规范
  • wordpress google插件广州seo
  • 网站制作平台专门做推广的软文
  • 怎么用目录建wordpress站点怎样开发wordpress主题