java並行小程序
❶ java一個多線程的小程序,為啥他知執行了一次就不執行了,不是會一直並發式執行下去的嗎
public class StartDi implements Runnable{
Sound s;
public StartDi(Sound s){
this.s=s;
}
public void run(){
s.ding();
}
}
public class StartDo implements Runnable{
Sound s;
public StartDo(Sound s){
this.s=s;
}
public void run(){
s.dong();
}
}
這兩個子類的run方法都是只執行一次而已啊。
你可以改為
public class StartDi implements Runnable{
Sound s;
public StartDi(Sound s){
this.s=s;
}
public void run(){
while(true){
s.ding();
}
}
}
public class StartDo implements Runnable{
Sound s;
public StartDo(Sound s){
this.s=s;
}
public void run(){
while(true){
s.dong();
}
}
}
❷ 求一個JAVA小程序,使用兩種以上JAVA模式
//##食堂:DinningHall.java
public class DinningHall{
private DinningHall instance = null;
private DinningHall{
}
public static DinningHall getInstance(){
//單例模式:創建食堂對象
if(instance == null){
instance = new DinningHall();
}
return instance;
}
public Food createFood(String order){
//工廠模式:創建一些吃的
if("1號菜".equals(order)){
//比如菜單上1號菜是魚香肉絲
return new YuXiangRouSi();
}
else if("2號菜".equals(order)){
//比如菜單上2號菜是宮保雞丁
return new GongBaoJiDing();
}
else{
return null;
}
}
//建造者模式start:集中管理,生產一些吃的東西
private List<Food> list = new ArrayList<Food>();
public List<Food> getFoods(){
return list;
}
public void proceSomeMantou(int count){
for(int i=0; i<count; i++){
list.add(new ManTou());
}
}
//建造者模式end
}
//##食物:Food.java
public interface Food(){
public String getName();
}
//##魚香肉絲:YuXiangRouSi.java
public class YuXiangRouSi implements Food(){
public String getName(){
return "魚香肉絲";
}
}
//##宮保雞丁:GongBaoJiDing.java
public class GongBaoJiDing implements Food(){
public String getName(){
return "宮保雞丁";
}
}
//##饅頭:Mantou.java
public class Mantou implements Food(){
public String getName(){
return "饅頭";
}
}
//##測試類Tester.java
public class Tester{
public static void main(){
//1.單例模式
DinningHall dh = DinningHall.getInstance();
//2.工廠模式
Food f1 = DinningHall.createFood("1號菜");
System.out.println(f1.getName());
//3.建造者模式
DinningHall.proceSomeMantou(5);
List<Food> foods = DinningHall.getFoods();
for(Food f : foods){
System.out.println(foods +"\t");
}
System.out.println();
}
}
//##覺得有用請及時點贊,在做任務哈
❸ java一個小程序問題(多線程問題,俺是一個初學者)
循環里加上
Thread.sleep(1);
class TestThreads extends Thread{
public void run(){
for(int i=0;i<=4;i++){
try {
System.out.println("test is operating!");
Thread.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
class TestThreads2 extends Thread{
public void run(){
for(int i=0;i<=4;i++)
try {
System.out.println("test2 is operating!");
Thread.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public class TestThread{
public static void main(String[] args) {
new TestThreads().start();
new TestThreads2().start();
}
❹ 求一個java小程序,要求有兩個界面,十個以上組件
抱歉幫不了你了
❺ 求一個Java小程序可運行,包含兩種以上的設計模式,隨便什麼設計模式都行
public class ManFactory {
/* 以下是單例模式的使用,外部需要使用該類時只能實例化一個對象*/
private static ManFactory mf = new ManFactory();
private static List<Man> allMan = new ArrayList<ManFactory.Man>();
private ManFactory(){}
public static ManFactory instance(){
return mf;
}
/*這里是簡單工廠模式的使用,當需要一個人的時候,直接調用工廠類的造人方法, 而不用去新建一個人*/
public Man makeMan(String name){
Man man = new Man();
man.setName(name);
allMan.add(man);//將造出來的人放入工廠的一個集合中,當以後需要這群人統一做事的時候,可以直接獲取到
return man;
}
public static List<Man> getAllMan() {
return allMan;
}
class Man{
private String name;
public void dancing(){
System.out.println(name +"正在跳舞");
}
public void setName(String name) {
this.name = name;
}
}
public static void main(String[] args) {
/*使用了單例模式,看上去是構建了兩個工廠,其實用的還是一個*/
ManFactory fc = ManFactory.instance();
ManFactory fc2 = ManFactory.instance();
fc.makeMan("小明");
fc.makeMan("小紅");
fc2.makeMan("小楊");
fc2.makeMan("小張");
for(Man man:ManFactory.getAllMan()){
man.dancing();
}
}
}
❻ 急需四個利用java多線程概念的小程序,不要復雜的,越簡單越好,請各位大蝦幫幫忙!!!
例子1:
public class ThreadTest
{
public static void main(String[] args)
{
new Thread(new ThreadDemo(1)).start();
new Thread(new ThreadDemo(2)).start();
}
}
class ThreadDemo implements Runnable
{
int x = 0;
boolean is_run = true;
public ThreadDemo(int x)
{
this.x = x;
}
public void run()
{
while(is_run)
{
System.out.println("------------------------>" + x);
}
}
}
==========================================================
例子2:
public class ThreadTest
{
public static void main(String[] args)
{
new ThreadDemo(1).start();
new ThreadDemo(2).start();
}
}
class ThreadDemo extends Thread
{
int x = 0;
boolean is_run = true;
public ThreadDemo(int x)
{
this.x = x;
}
public void run()
{
while(is_run)
{
System.out.println("------------------------>" + x);
}
}
}
====================================================
例子3:
import java.util.Timer;
import java.util.TimerTask;
public class ThreadTest
{
public static void main(String[] args)
{
ThreadDemo td1 = new ThreadDemo(1);
ThreadDemo td2 = new ThreadDemo(2);
Timer time = new Timer();
time.schele(td1, 0, 50);//0微秒後開始執行第一次,每微秒執行一次run()方法
time.schele(td2, 0, 50);
}
}
class ThreadDemo extends TimerTask
{
int x = 0;
boolean is_run = true;
public ThreadDemo(int x)
{
this.x = x;
}
public void run()
{
System.out.println("------------------------>" + x);
}
}
=======================================================
例子4:
我就知道這三種實現多線程的方式~~抱歉~
❼ 利用Runnable 介面實現多線程,編寫一個Java小程序。在屏幕上顯示時間,每隔一秒鍾刷新一次。為使小程序不
//jdk 7X,eclipse 3.7X測試通過
import java.awt.Graphics;
import java.util.Date;
import javax.swing.JFrame;
public class Clock extends JFrame implements Runnable{
//窗口大小
final int WIDTH=300;
final int HEIGHT=300;
//用來獲取當前時間
Date now;
Clock(){
//裝配桌面
setLocation(300,300);
setSize(WIDTH,HEIGHT);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
now=new Date();
}
public void paint(Graphics g){
//清屏
g.clearRect(0, 0, WIDTH, HEIGHT);
//寫時間
g.drawString(now.toString(), 50, 50);
}
public void run() {
while(true){
try {
Thread.sleep(100);
} catch (InterruptedException e) {
}
now=new Date();
repaint();//重繪
}
}
public static void main(String[] args){
(new Clock()).run();
}
}
❽ 改進一個java小程序是他成為多線程的...(請指教~~)
1樓的線程類是繼承Thread類的 而不是實現Runnable介面的 所以在主方法中 沒有必要在new Thread(); 占內存
這是一個多線程的程序 只運行1次是看不出來的 以下是修改了下1樓的代碼 如果想看明白多線程是怎麼輸出的 把我引掉的代碼打開
public class MyThreadClass { // 入口主類
public static void main(String[] args) {
// for(int i=0;i<10;i++){
PrintThread printThread = new PrintThread(); // 列印線程對象
Access_Database access_databaseThread = new Access_Database();
Draw_Picture_On_Screen draw_picture_on_screenThread = new Draw_Picture_On_Screen();
// try {
// Thread.sleep(1000);
// } catch (InterruptedException e) {
// e.printStackTrace();
// }
printThread.start();
access_databaseThread.start();
draw_picture_on_screenThread.start();
// System.out.println();
// }
}
}
class PrintThread extends Thread {
public void run() {
System.out.println("printing_a_file");
}
}
class Access_Database extends Thread {
public void run() {
System.out.println("accessing_database");
}
}
class Draw_Picture_On_Screen extends Thread {
public void run() {
System.out.println("drawing_picture_on_screen");
}
}
❾ java多線程同步小程序,請高手看看問題出在哪
你這程序就是同步運行吧 不知道你說的是什麼意思 其實程序是在同步運行 畫完一個再畫另外一個 只不過切換的速度很快 而且sleep的時間是一樣的 所以你看不出來是同步運行的 吧等待代碼改為Thread.sleep((int)(Math.random()*10000));再看一下
同步這個概念應該是在判斷與執行之間存在線程安全問題才產生的 你這個程序用不用同步根本沒有區別的
而且你用extends Thread的類時不可以用synchronized同步方法,因為當你創建新的線程時會new新對象 而同步鎖就不一樣了